У меня есть один список в моем приложении, он содержит две строки для задачи, а другой - для тревоги, даты, серьезности. Первоначально первая строка элемента списка отображается только для всего элемента списка, а вторая невидима. Когда я нажимаю на элемент списка вторую строку, отображаемую для этого элемента, а также нажимаю на другой элемент списка, в этот момент указанный элемент списка закрыл эту вторую строку. Его работа прекрасна для меня ... Моя проблема заключается в том, что я открываю один элемент списка, а затем прокручиваю список, а затем нажимаю на другой элемент списка, в то время выше не может быть закрыт, потому что указанный выше элемент списка будет chnaged.please любой один помочь мне, как решить эту проблему ...listview Получение нового экземпляра при прокрутке списка
int lastselectedPosition == -1
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position,
long id) {
TextView textviewDate=(TextView)view.findViewById(R.id.taskTimeidDaytoDay);
selectedtaskDate=textviewDate.getText().toString().trim();
if (lastselectedPosition == -1) {
Log.i(TAG,"Loopif:"+lastselectedPosition);
TextView twTaskTime = (TextView) view
.findViewById(R.id.taskTimeidDaytoDay);
TextView twSeverity = (TextView) view
.findViewById(R.id.severityidDaytoDay);
TextView twAlarm = (TextView) view
.findViewById(R.id.alarmidDaytoDay);
twAlarm.setVisibility(view.VISIBLE);
twSeverity.setVisibility(view.VISIBLE);
twTaskTime.setVisibility(view.VISIBLE);
lastselectedPosition = position;
lastSelectedItem = arg0.getChildAt(position);
} else {
// Log.i(TAG,"LoopElse:"+lastselectedPosition);
lastSelectedItem.findViewById(R.id.taskTimeidDaytoDay)
.setVisibility(lastSelectedItem.GONE);
lastSelectedItem.findViewById(R.id.severityidDaytoDay)
.setVisibility(lastSelectedItem.GONE);
lastSelectedItem.findViewById(R.id.alarmidDaytoDay).setVisibility(
lastSelectedItem.GONE);
if (lastselectedPosition != position) {
view.findViewById(R.id.taskTimeidDaytoDay).setVisibility(
view.VISIBLE);
view.findViewById(R.id.severityidDaytoDay).setVisibility(
view.VISIBLE);
view.findViewById(R.id.alarmidDaytoDay).setVisibility(
view.VISIBLE);
lastselectedPosition = position;
lastSelectedItem = arg0.getChildAt(position);
} else {
lastselectedPosition = -1;
lastSelectedItem = null;
}
}
GetView():
@Override
public View getView(int position, View view, ViewGroup parent) {
Log.i("XXXX", "Inside getView");
final DaytoDayTaskGetterSetter objDaytoDaygetset=getItem(position);
TextView textviewTask;
TextView txtviewAlarm ,txtviewTaskTime ,txtviewSeverity;
Log.i(TAG,"InsideGetView:"+position);
LayoutInflater inflater=(LayoutInflater)context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if(view==null)
{
view=inflater.inflate(R.layout.daytodaylistlayout,null);
}
Log.i("XXXX", "before first test");
textviewTask=(TextView)view.findViewById(R.id.tasknameidDaytoDay);
txtviewAlarm=(TextView)view.findViewById(R.id.alarmidDaytoDay);
txtviewSeverity=(TextView)view.findViewById(R.id.severityidDaytoDay);
txtviewTaskTime=(TextView)view.findViewById(R.id.taskTimeidDaytoDay);
return view;
}
Вначале я нажимаю элемент списка «gdfgdtet», он показывает еще одну строку, а затем я нажимаю на второй элемент списка «dfgsdgsd», в то время указанный выше элемент списка «gdfgdtet» закрыл вторую строку. Это нормальный вывод .Пожалуйста, если я открою элемент списка «gdfgdtet», а затем проведите по экрану список в это время, оба «gdfgdtet» «dfgsdgsd» будут открыты и разбиты ... потому что ссылка на один элемент списка изменилась, когда я прокручиваю, пожалуйста, как решить эту проблему ...
Пожалуйста размещать логику, содержащуюся внутри GetView() 'метода' и после трассировки стека для авария. –