我有一個列表視圖,當用戶點擊一個項目時,我顯示一個圖像,用戶點擊了這個項目。列表視圖從通知中填充。自定義列表視圖索引自動更改
假設一個項目被添加到listview.Now我點擊該項目和圖像顯示在它的前面。現在當我在列表視圖中輸入新項目什麼都不會發生(現在有兩個項目在列表視圖中)。當我在列表視圖中添加第三個項目時,位置0處的項目中的圖像隱藏並顯示在位置1.爲什麼發生這種情況?
現在要在listview項目中添加圖像。我必須首先對下一次開放活動執行一些檢查,如果這些檢查是成功的,則將該圖像放在該活動中所單擊的項目前面。
所以要做到這一點我所做的是我發送下一個活動中點擊的項目位置,並執行這些檢查,如果這些檢查成功的話,我通過使用該位置在前一活動的onActivityResult
函數上進行放置和圖像我發送到此活動。意思是我將該位置值發送回onActivityResult
函數中的上一個活動,在該函數中放置圖像。
圖像的位置工作正常。但是,雖然我收到通知,我添加該項目在列表視圖導致getView
函數被調用的每個項目在列表視圖再次填充listview.Here問題發生,即圖像從列表中的位置0項目移動到位置1項目。
請詢問是否需要更多解釋或不清楚。
下面是ListView項單擊代碼:
TextView tv=(TextView)view.findViewById(R.id.clientip);
Intent i=new Intent(getApplicationContext(),ChatPageActivity.class);
i.putExtra("AdminEmail",ClientListActivity.AdminEmail);
i.putExtra("ClientIp",tv.getText().toString());
i.putExtra("ChildAt", position);
startActivityForResult(i, 200);
ChildAt
是我送的位置。 在下一個活動中執行檢查之後。
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data)
{
try {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode!= 23)
{
Integer integer=data.getExtras().getInt("ChildAt");
ImageView imageView=(ImageView)lv.getChildAt(integer).findViewById(R.id.onlineImg);
imageView.setImageResource(R.drawable.online);
}
}catch(Exception e)
{
Log.e("ClientList_onActivityResult",e.getMessage());
}
}
這是onActivityResult
如果代碼不等於23則意味着在接下來的活動所有的檢查是正確的,你可以在它從下發再次回到這一活動的位置放置圖像活動。
這裏是我的BaseAdapter類的getView
代碼:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view=convertView;
if(convertView==null)
view=inflater.inflate(R.layout.activeclientlist,null);
TextView ip=(TextView)view.findViewById(R.id.clientip);
String clientip=this.iplist.get(position);
ip.setText(clientip);
return view;
}
在baseADapter
我插入現有的使用這段代碼列表視圖項..
this.iplist.add(ip);
this.notifyDataSetChanged();
重要:
還我想提到的是,這種行爲發生在一個模式,即如我上面所說的,當我插入第三個項目時,圖像位置發生了變化。之後當我添加第五項時,它會再次發生變化等等。
thnx的答覆。我試着把'adapter.notifyDataSetChanged()',但它沒有奏效。 – Mj1992 2012-08-05 13:42:12
它將如何解決我的問題?因爲現在我也沒有在'getView'函數中設置ImageView值。我將它設置在click事件上。因此,如果我已經設置了特定索引的項目圖像,則意味着所有其他索引都不會設置。 – Mj1992 2012-08-05 15:06:56
你可以嘗試這種方法(同時學會避免將視圖代碼與控制器代碼混合在一起,這不會是一件壞事),或者堅持使用你的方法。作爲一般規則,不要直接訪問列表中的視圖,在適配器內更好地保證安全。 – 2012-08-06 20:35:40