プロジェクト内に ListView があります。これには多くの要素があり、レール サーバーから動的に読み込まれるため、カスタム アダプターを使用します。
アイテムが長押しされたときに ListItem の内容を変更したい。これを実現するために、ListItem 内に 2 つのレイアウトがあり、1 つが表示され、もう 1 つが非表示になっています。
問題は、アイテムを長押しすると、レイアウトが変更されますが (予想どおり)、他の ListItems も影響を受け、同じように変更されることです。これは 5 項目ごとに 1 回発生するようですが、その理由はわかりません。
これは私が使用している LongClickListener です。カスタム アダプターの GetView メソッド内にあります。
View v = convertView;
if (v == null){
LayoutInflater vi =
(LayoutInflater)getActivity().getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.list_item, null);
}
final LinearLayout placeInfo =
(LinearLayout) v.findViewById(R.id.list_item_info);
final RelativeLayout placeBrief =
(RelativeLayout)v.findViewById(R.id.list_item_brief);
v.setOnLongClickListener(new OnLongClickListener(){
@Override public boolean onLongClick(View v) {
placeInfo.setVisibility(View.GONE);
placeBrief.setVisibility(View.VISIBLE);
return false;
}});
助けていただければ幸いです。事前に感謝します。