ユーザーがアイテムをクリックすると、ユーザーがこのアイテムをクリックしたという画像を表示するリストビューがあります。リストビューは通知から取り込まれます。
リストビューにアイテムが追加されたとします。そのアイテムをクリックすると、その前に画像が表示されます。リストビューに新しいアイテムを入力しても、何も起こりません(リストビューには2つのアイテムがあります)。リストビューに 3 番目のアイテムを追加すると、位置 0 のアイテムの画像が非表示になり、位置 1 に表示されます。これはなぜですか?
リストビュー項目に画像を追加します。最初に、次の開始アクティビティでいくつかのチェックを実行する必要があります。これらのチェックが成功した場合は、アクティビティでクリックされたアイテムの前に画像を配置します。
これを行うために、次のアクティビティでクリックされたアイテムの位置を送信し、それらのチェックを実行します。これらのチェックが成功した場合、onActivityResult
このアクティビティに送信した位置を使用して、前のアクティビティの機能に配置してイメージします.その位置の値をonActivityResult
、画像を配置する関数の前のアクティビティに送り返すことを意味します。
画像の配置は正常に機能しますが、通知を受け取っている間にリストビューにアイテムを追加すると、リストビューgetView
の各アイテムに対して関数が再度呼び出されてリストビューにデータが入力されます.ここで問題が発生します。位置0のアイテムからの画像リストの 1 番目の項目に移動します。
さらに説明が必要な場合や不明な点がある場合は、質問してください。
リストビューアイテムクリックのコードは次のとおりです。
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 に等しくない場合、次のアクティビティのすべてのチェックが正しいことを意味し、次のアクティビティからこのアクティビティに再び送り返される位置に画像を配置できることを意味します。
getView
私の BaseAdapter クラスのコードは次のとおりです。
@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();
重要:
また、この動作はパターンで発生することに言及したいと思います。つまり、3 番目のアイテムを挿入すると画像の位置が変化します。その後、5 番目のアイテムを追加すると再び変化します。