#android #listview #checkbox
#Android #listview #флажок
Вопрос:
Я пытаюсь установить флажок при некотором условии, которое должно выполняться при других действиях, при нажатии флажка, содержащего listview. Я нажму на свой флажок listview containg, который приведет меня к другому действию, где я заполню форму и вернусь к своему listview со статусом, в зависимости от которого я буду устанавливать флажок. Для этого я использую static arraylist для хранения данных listview, по которым я получил статус успеха, и с помощью этого флажка arraylist установлен флажок. Вот мой код:
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
final FinalSubmitItem rowItem = getItem(position);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = inflater.inflate(R.layout.customview_finalsubmit_itemdetails, null);
holder = new ViewHolder();
holder.txtItemType = (TextView) convertView.findViewById(R.id.ItemtypeFinal);
holder.txtCountry = (TextView) convertView.findViewById(R.id.txtcountryFinal);
holder.txtSerial = (TextView) convertView.findViewById(R.id.txtItemNumberFinal);
holder.chck = (CheckBox) convertView.findViewById(R.id.itemCheck);
convertView.setTag(holder);
} else{
holder = (ViewHolder) convertView.getTag();
}
holder.txtItemType.setText(rowItem.getItemType());
holder.txtCountry.setText(rowItem.getItemCountry());
holder.txtSerial.setText(rowItem.getItemNo());
if(position == 0){
holder.chck.setChecked(false);
}
for(int i=0; i<checkedInfo.size(); i ){
if(rowItem.getItemNo().equals(checkedInfo.get(i).getItemSerialVerified())){
rowItem.setItemCheck(true);
}
}
if(rowItem.isItemCheck()){
holder.chck.setChecked(true);
}
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String itemType = rowItem.getItemType();
String itemCountry = rowItem.getItemCountry();
String itemSerial = rowItem.getItemNo();
int itemTypeId = rowItem.getItemId();
int pickupId = rowItem.getPickupId();
Intent inn = new Intent(context, FinalSubmitDetails.class);
inn.putExtra("itemType", itemType);
inn.putExtra("itemCountry", itemCountry);
inn.putExtra("itemSerial", itemSerial);
inn.putExtra("itemId", itemTypeId);
inn.putExtra("pickupId", pickupId);
context.startActivity(inn);
}
} );
notifyDataSetChanged();
return convertView;
}
В других действиях:
if(response.contains("Success.")){
serialNumberVerf = serialNumber;
itemIdVerified = itemId;
actionIdVerified = actionId;
ItemCheckedInfo info = new ItemCheckedInfo();
info.setActionIdVerified(actionIdVerified);
info.setItemIdVerified(itemIdVerified);
info.setItemSerialVerified(serialNumberVerf);
checkedInfo.add(info);
Toast.makeText(getApplicationContext(), response, Toast.LENGTH_LONG).show();
onBackPressed();
Но это не работает, и я объявил этот arraylist в классе, в котором объявлен класс customview.
Комментарии:
1. В чем ваш вопрос?
2. И почему ArrayList статичен?
3. Что означает «это не работает»?
4. @Code-Ученик отредактирован.. пожалуйста, проверьте
5. ни его установка флажка, ни его выполнение с несколькими флажками.. Я хочу оба
Ответ №1:
Я сделал это так .. просто одна строка, отредактированная в методе getview ():
((Activity) context).startActivityForResult(inn, 1);
И при успешном выполнении это:
Intent returnIntent = new Intent();
returnIntent.putExtra("position", position);
setResult(RESULT_OK,returnIntent);
finish();
Наконец, в основной деятельности это было сделано:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
if(resultCode == RESULT_OK){
int positionResult=data.getIntExtra("position",0);
itemInfo.get(positionResult).setItemCheck(true);
item.notifyDataSetChanged();
}
}
}
Ответ №2:
Вам нужно переопределить setOnCheckedChangeListener
[Править]
На самом деле мне нужно выполнить что-то по щелчку listview .. вот почему я его не использовал
Вы можете переопределить onItemClickListener
его.
Комментарии:
1.На самом деле мне нужно выполнить что-то по щелчку listview .. вот почему я его не использовал
2. convertView.setOnClickListener делает то же самое
3. Для этого вам нужно установить прослушиватель на флажок.
4. Я просто хочу проверить это при условии.. У меня нет никаких причин вызывать listener