У меня возникает одна проблема при добавлении ListView в макет. Я реализовал один ListView на одной странице, где мы получаем список элементов, в том случае, когда мы нажимаем на какой-либо ListMember, он меняет свой цвет и снова нажимает на него, это изменит его на предыдущий цвет. Теперь представьте, из-за высоты элемента один экран может содержать максимум 5 Перечислите элементы, чтобы следующий член увидел, что вам нужно прокрутить вниз.My ListView не работает должным образом
теперь представте члены Список являются
Пункт 1
Пункт 2
Пункт 3
Пункт 4
Пункт 5
Пункт 6
Элемент 7
Среди них можно видеть только 5 предметов за один раз, теперь, когда я нажимаю «Элемент 1» (первый член первых пяти членов), его цвет меняется (скажем, БЕЛАЯ ЗЕЛЕНУЮ), но когда я прокрутите вниз, я вижу, что «Пункт 6» (первый член из первых пяти участников) также изменил свой цвет (на ЗЕЛЕНЫЙ), и когда я нажимаю «Пункт 6», на этот раз setOnItemClickListener
для этого участника фактически срабатывает и пытается изменить его цвет к тому, что он уже изменил.
это код setOnItemClickListener
:
productList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
Log.i("imIn","Item Clicked");
v.animate();
if(listClicked[position]==0)
{
Log.i("***After*** ","Cyan Set ON");
v.setBackgroundColor(Color.parseColor("GREEN"));
listClicked[position]=1;
}
else if(listClicked[position]==1){
Log.i("***After*** ","Cyan Set OFF");
v.setBackgroundColor(Color.parseColor("WHITE"));
listClicked[position]=0;
}
}
});
AfterEdit :: это мой адаптер
public class ProductListBaseAdapter extends BaseAdapter {
SharedPreferences sharedpreferences;
private static ArrayList<Product> searchArrayList;
private LayoutInflater mInflater;
ArrayList<TotalSelectedProduct> selectedProducts=new ArrayList<>();
final int[] listClicked;
public ProductListBaseAdapter(Context context, ArrayList<Product> totalProducts, int[] ClickedList) {
searchArrayList =totalProducts;
mInflater = LayoutInflater.from(context);
listClicked=ClickedList;
}
public int getCount() {
return searchArrayList.size();
}
public Object getItem(int position) {
return searchArrayList.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.item_list, null);
holder = new ViewHolder();
holder.txtItem = (TextView) convertView.findViewById(R.id.item_name);
holder.edit=(Button)convertView.findViewById(R.id.edit);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
/** I have tried inserting onClickListener in adapter also .but resulting same
*
holder.txtItem.setText(searchArrayList.get(position).getItemName());
final View.OnClickListener makeListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
v.animate();
if(listClicked[position]==0)
{
Log.i("***After*** ","Cyan Set ON");
v.setBackgroundColor(Color.parseColor("#ff2dbeff"));
listClicked[position]=1;
}
else if(listClicked[position]==1){
Log.i("***After*** ","Cyan Set OFF");
v.setBackgroundColor(Color.parseColor("#009933"));
listClicked[position]=0;
}
}
};
holder.txtItem.setOnClickListener(makeListener); */
return convertView;
}
static class ViewHolder {
TextView txtItem;
Button edit;
}
}
Почему это происходит?
Ваш заголовок и описание вопроса имеют большую разницу. Пожалуйста, исправьте свой заголовок вопроса, чтобы он дошел до большего количества пользователей. –
Вы использовали пользовательский адаптер ?, пожалуйста, укажите правильный код. –
@AndroidWeblineindia также вставить код адаптера, пожалуйста, проверьте –