AndroidプログラミングリストListViewマークの行の状態を記録する方法
本明細書の例は、Androidプログラミング記録ListViewマーカーライン状態の方法を説明する。皆さんに参考にしてあげます。具体的には以下の通りです。
Demoさんは特に何もありません。一番特別なのはnotifyData Set Charngedを使わないようにすることです。お金がかかりすぎて、もちろん使うのは多くの仕事が省けます。でも時々他の問題が発生します。プロジェクトの経験からこの可能性があると言われました。
ここで述べたように、皆さんのAndroidプログラムの設計に役に立ちます。
Demoさんは特に何もありません。一番特別なのはnotifyData Set Charngedを使わないようにすることです。お金がかかりすぎて、もちろん使うのは多くの仕事が省けます。でも時々他の問題が発生します。プロジェクトの経験からこの可能性があると言われました。
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int pos, long arg3) {
/**
* ListView , getChildAt(index) , ( ) !
1、 Null ;
2、getChildCount getCount ( );
3、 getChildAt(index).findViewById(...) , 。
getFirstVisiblePosition() , position-getFirstVisiblePosition(), getChildAt !
* */
int now_pos = pos - adapterView.getFirstVisiblePosition();
View v = adapterView.getChildAt(now_pos);
ImageView imageView = (ImageView) v.findViewById(R.id.image);
if (imageView.getVisibility() == View.VISIBLE) {
imageView.setVisibility(View.GONE);
adapter.setState(pos,NONBIAOZHI);
}else{
imageView.setVisibility(View.VISIBLE);
adapter.setState(pos,BIAOZHI);
// getView{ , ^ M
// adapter.notifyDataSetChanged();
// notifyDataSetChanged,getView ,
refreshListView(pos, imageView);
}
}
public void refreshListView(int pos, ImageView imageView) {
if(pre != pos && !hasmap.isEmpty()){
ImageView image = (ImageView) hasmap.get(pre);
image.setVisibility(View.GONE);
hasmap.remove(pre);
}
pre = pos;
hasmap.put(pre, imageView);
}
上記はActivityの方法セグメントで、以下はBaseAdapterの方法セグメントです。
// O
public void setState(int pos,int state){
if(state == MainActivity.BIAOZHI){
// c , x
map.clear();
map.put(pos, 1);
}else{
map.remove(pos);
}
}
// zy
public boolean getState(int p){
if (!map.isEmpty() && map.containsKey(p)) {
return true;
}else
return false;
}
get Viewコード:
//
if (getState(position)) {
holder.imageView.setVisibility(View.VISIBLE);
}else
holder.imageView.setVisibility(View.GONE);
プロジェクトのダウンロードを添付して、自分で実行するとタイトルの効果が得られます。完全な実例コードはここをクリックしてダウンロードです。ここで述べたように、皆さんのAndroidプログラムの設計に役に立ちます。