2012-01-05 8 views
0

BaseAdapterを使用してListViewの行を表示します。 アクティビティーとアダプターは、2つの異なるクラスで記述されます。 ListActivityでは、以下のコードセットの行データを使用します。アクティビティとアダプタ間のデータ

String[] FileName = {"a", "b", "c"}; 
MyAdapter a = new MyAdapter(this, FileName); 
setListAdapter(a); 

アダプタでは、各行にFileNameが表示されます。 しかし、FileNameが変更されることがあります。 したがって、私は変更された配列FileNameを取得したいと考えています。 どうすればいいですか?

アダプタコード:この例では

private String[] name = null; 
public BookmarkListAdapter(Context ctxt, String[] s) { 
name = s; 
} 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
ViewTag viewTag; 
if(convertView == null) { 
convertView = myInflater.inflate(R.layout.row_bookmark_list, null); 
viewTag = new ViewTag((TextView)convertView.findViewById(R.id.row_bookmark_info)); 
convertView.setTag(viewTag); 
} 
else { 
viewTag = (ViewTag) convertView.getTag(); 
} 
viewTag.n.setText(name[position]); 
name[position] = name[(position + 1) % 3]; //change 
} 
class ViewTag { 
TextView n; 
public ViewTag(TextView t) { 
this.n = t; 
} 
} 

、{ "B"、 "C"、 "A"}に配列変化。 アクティビティでは、変更された配列を取得する方法は?

+3

質問を修正して明確にすることができますか? –

+0

ここでは、FileNameをハードコードしています。これは更新されたone.forを取得するためには機能しません。FileNameへの参照を変更する必要があります。つまり、使用する直前にハードコーディングするのではなく、 MyAdapter。 – Hiral

+0

私は既に問題のコードを編集しています。 – brian

答えて

1
But it may change the FileName. 

あなたは、あなたがyouradapter.notifyDataSetChanged()を呼び出すことができ、それがあなたの値を更新しますFileNameの値に変更することを意味します。

また、変数を変更する場合は、アダプタをreinstantiateにして新しい変数名を渡す必要があります。

注:可変名を変更する必要がない場合は、必要なときに値を変更して値を更新してください。

関連する問題