Мне нужно выделить выбранную строку в виде списка, как только мы выберем элемент.Список Просмотреть выделенную выделенную строку
Например: я выбираю первый элемент, который его подсвечивает, если я выбираю третий элемент, то удаляю 1-й элемент, а затем выделяю третий предмет.
Я видел много примеров и вопросов, размещенных в Stackoverflow, но havent нашел правильное решение.
Ниже мой код, он работает, но мне нужно выбрать элемент дважды, чтобы получить выделение, как я могу изменить это, чтобы работать плавно?
ListView mainListView = (ListView) findViewById(R.id.mainListView);
// Create and populate a List of planet names.
planets = new String[] { "Mercury", "Venus", "Earth", "Mars",
"Jupiter", "Saturn", "Uranus", "Neptune",
"Ceres","Pluto","Haumea","Makemake","Eris"};
planetList = new ArrayList<String>();
planetList.addAll(Arrays.asList(planets));
planetsAdapter = new PlanetsAdapter (this,planetList);
planetsAdapter .setNotifyOnChange(true);
// Set the ArrayAdapter as the ListView's adapter.
mainListView.setAdapter(planetsAdapter);
mainListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
mainListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
planetsAdapter.setSelectedPosition(position);
planetsAdapter.notifyDataSetChanged();
}
});
адаптированный Класс:
public class PlanetsAdapter extends ArrayAdapter<String> {
private ArrayList<String> planets;
private Context mContext = null;
private LayoutInflater inflater;
// used to keep selected position in ListView
private int selectedPos = -1; // init value for not-selected
public PlanetsAdapter (Context context,ArrayList<String> objects) {
super(context,0,objects);
mContext = context;
planets = objects;
}
public void setSelectedPosition(int pos){
selectedPos = pos;
// inform the view of this change
}
public int getSelectedPosition(){
return selectedPos;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_item, null);
}
TextView title = (TextView) convertView
.findViewById(R.id.rowTextView);
// change the row color based on selected state
if(position == selectedPos){
//title.setTextColor(Color.parseColor("#FFFFFF"));
title.setBackgroundColor(Color.parseColor("#ED07E1"));
}else{
//title.setTextColor(Color.parseColor("#000000"));
title.setBackgroundColor(Color.parseColor("#e2e2e2"));
}
title.setText(getItem(position));
return convertView;
}
}
Edit: Ответил Ниже
For anyone who is looking for answers, i have answered it below hope it helps.
Попробуйте добавить 'notifyDataSetChanged();' to 'setSelect edPosition' в вашем адаптере –
@MD Пробовал это раньше, но все же мне нужно выбрать элемент дважды, чтобы выделить его. – user2056563
Ваш вопрос для меня не подлежит. 'выберите элемент дважды, чтобы получить выделение'. –