#java #android #listview #arraylist #android-arrayadapter
#java #Android #listview #arraylist #android-arrayadapter
Вопрос:
У меня есть представление списка. Внутри представления списка у меня есть текстовое представление, рядом с текстовым представлением есть две кнопки добавить и минус. Все эти вещи находятся внутри listview. Теперь я хочу, чтобы при нажатии кнопки добавить значение текстового представления было увеличено, а при нажатии кнопки минус значение текстового представления должно уменьшаться. я использовал класс адаптера массива для установки данных. пожалуйста, кто-нибудь, помогите мне.
public class MainActivity extends ActionBarActivity {
listviewAdapter listviewAdapter;
List<Constant> constantlist = new ArrayList<Constant>();
ListView list;
String[] item;
String[] quantity;
String[] price;
//private ArrayList<HashMap<String,String>> list;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
item = new String[] {"Pizza", "Burger", "Chicken", "Biriyani", "Chapathi" , "Dosa", "Veg Pizza", "Chicken Burger", "Chicken Pizza", "pizza"};
quantity = new String[] {"2", "1", "3", "2", "5", "2", "4", "3", "1", "2" };
price = new String[] {"$70.32", "$34.09", "56.763", "546.0", "23.09", "90.34", "23.76", "76.098", "45.09", "87.09"};
for(int i=0;i<item.length;i ){
Constant constant = new Constant (item[i], quantity[i], price[i]);
constantlist.add(constant);
}
list= (ListView)findViewById(R.id.listview);
listviewAdapter = new listviewAdapter(this, R.layout.listview_row, constantlist);
list.setAdapter(listviewAdapter);
}
}
а xml — это:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@ id/relativeLayout1"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:id="@ id/txt_item"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="First"
android:layout_weight="2"
android:textColor="#ffffff"
android:textSize="20sp">
</TextView>
<Button
android:id="@ id/btn_redqty"
android:layout_width="40dp"
android:layout_height="40dp"
android:text="-"
android:focusable="false"
android:textColor="#ffffff"
android:textSize="20sp"
/>
<TextView
android:id="@ id/txt_quantity"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:text="Second"
android:textColor="#ffffff"
android:gravity="center"
android:textSize="20sp"
>
</TextView>
<Button
android:id="@ id/btn_addqty"
android:layout_width="40dp"
android:layout_height="40dp"
android:text=" "
android:focusable="false"
android:textColor="#ffffff"
android:textSize="20sp"
/>
<TextView
android:id="@ id/txt_price"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Third"
android:gravity="right"
android:layout_weight="1"
android:textColor="#ffffff"
android:textSize="20sp">
</TextView>
<!-- <TextView
android:id="@ id/FourthText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Fourth"
android:layout_weight="1"
android:textColor="#ffffff"
android:gravity="center"
android:textSize="15sp">
</TextView> -->
</LinearLayout>
и класс адаптера является :
public class listviewAdapter extends ArrayAdapter<Constant>{
Context context;
LayoutInflater inflater;
List<Constant> constantlist;
public listviewAdapter(Context context, int resourceId,
List<Constant> worldpopulationlist) {
super(context, resourceId, worldpopulationlist);
//mSelectedItemsIds = new SparseBooleanArray();
this.context = context;
this.constantlist = worldpopulationlist;
inflater = LayoutInflater.from(context);
}
private class ViewHolder{
TextView item;
TextView quantity;
TextView price;
}
public View getView(int position, View view, ViewGroup parent){
final ViewHolder holder;
if(view == null){
holder = new ViewHolder();
view=inflater.inflate(R.layout.listview_row, null);
holder.item = (TextView) view.findViewById(R.id.txt_item);
holder.quantity = (TextView) view.findViewById(R.id.txt_quantity);
holder.price = (TextView) view.findViewById(R.id.txt_price);
view.setTag(holder);
}else{
holder = (ViewHolder) view.getTag();
}
holder.item.setText(constantlist.get(position).getItem());
holder.quantity.setText(constantlist.get(position).getQuantity());
holder.price.setText(constantlist.get(position)
.getPrice());
return view;
}
public List<Constant> getWorldPopulation() {
return constantlist;
}
}
Ответ №1:
В вашем файле макета.Добавьте метод onclick для кнопок.
<Button
android:id="@ id/btn_addqty"
android:layout_width="40dp"
android:layout_height="40dp"
android:text=" "
android:focusable="false"
android:textColor="#ffffff"
android:textSize="20sp"
android:onClick = "addQuantity"
/>
В вашей деятельности. Добавьте метод addQuantity
public void addQuantity(View v) {
// v is the LinearLayout of your row . Get the textview and add the text
}
Прочитайте здесь или здесь для получения дополнительной информации.