最初のListViewをクリックして、あるListViewから別のListViewに移動する必要があるアプリケーションを開発しています。2番目のアクティビティListViewは、1つのyesアイコン画像とTextViewを持つカスタムListViewです。開始時に画像アイコンが表示されず、リストアイテムをクリックすると、対応する画像が表示されます。2番目のListViewはシングルクリックのリストビューです。![ここに画像の説明を入力してください] [1]戻るボタンをクリックして、もう一度最初のボタンをクリックするとListView、2番目のListViewのクリックされたアイテムが非表示になります。
私はAndroidを初めて使用し、listitemのクリック状態をどのように管理する必要があるのかわかりません。Plzヘルプ...1番目の画面から2番目の画面に移動し、1番目のリストビューアイテムで再クリックが行われたときにリストビューアイテムの状態を維持する必要があります。
2番目のリストビューアクティビティ
SharedPreferences pref;
private static String names[] = {"SV3","SV4","SV6","LV1"};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.selectibx);
lv=(ListView)findViewById(R.id.listView1);
adapter = new LvCustomAdapter(this, names);
lv.setAdapter(adapter);
LoadSelections();
ImageView img=(ImageView) lv.findViewById(R.id.image);
if(img!=null)
{
img.setImageResource(R.drawable.black_arrow);
img.setVisibility(View.VISIBLE);
}
lv.setOnItemClickListener(this);
back=(ImageView)findViewById(R.id.imageback);
back.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
Intent = new Intent(getApplicationContext(),MainActivity.class);
Bundle b=new Bundle();
b.putString("state", "clicked");
intent.putExtras(b);
setResult(RESULT_OK, intent);
startActivity(intent);
finish();
}
});
}
public void onItemClick(AdapterView<?> lvv, View view, int position, long id) {
if (current != -1) {
View last = lvv.getChildAt(current); // the last one clicked
last.findViewById(R.id.image).setVisibility(View.GONE);
}
view.findViewById(R.id.image).setVisibility(View.VISIBLE);
current = position; // remember the new clicked position
System.out.println("Selected State is: "+current);
SaveSelections(view);
}
private void SaveSelections(View v) {
// TODO Auto-generated method stub
SharedPreferences settings = getSharedPreferences( PREFS_NAME,0 );
SharedPreferences.Editor editor = settings.edit();
editor.putInt("Raman", current);
editor.commit();
}
private void LoadSelections() {
pref = this.getApplicationContext().getSharedPreferences(PREFS_NAME, MODE_WORLD_READABLE);
int xy=pref.getInt("Raman",1);
adapter = new LvCustomAdapter(this, names);
lv.setAdapter(adapter);
lv.setSelection(xy);
System.out.println(lv.getSelectedItemPosition()+"****"+xy);
View v=lv.getChildAt(xy);
}
}
カスタムアダプタクラス:
public class LvCustomAdapter extends BaseAdapter {
protected ListView mListView;
public String title[];
//public String designations[];
public Activity context;
public LayoutInflater inflater;
int current=-1;
public LvCustomAdapter(Activity context,String[] title) {
super();
this.context = context;
this.title = title;
this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
// TODO Auto-generated method stub
return title.length;
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
public static class ViewHolder
{
ImageView imgarrow;
TextView txtViewName;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if(convertView==null)
{
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.commonlist, null);
holder.txtViewName = (TextView) convertView.findViewById(R.id.tvItem);
holder.imgarrow = (ImageView) convertView.findViewById(R.id.image);
/* holder.email.setOnClickListener(emailClickListener);
holder.mobile.setOnClickListener(mobileClickListener);
holder.phone.setOnClickListener(phoneClickListener);
convertView.setTag(holder); */
//int a=convertView.getSelectedItemPosition();
int a=position;
convertView.setTag(holder);
}
else
holder=(ViewHolder)convertView.getTag();
holder.txtViewName.setText(title[position]);
holder.imgarrow.setImageResource(R.drawable.black_arrow);
holder.imgarrow.setVisibility(View.INVISIBLE);
return convertView;
}
}
ありがとう....