同じアクティビティレイアウトでは、TextViewフィールドとListViewの各項目にボタンがあります。私のリストビュー配列アダプタでは、私は "動的に"上記の私のTextViewフィールドの値を更新しようとしているgetView()メソッド内のボタンクリックリスナーを持っています。ListViewボタンからTextViewフィールドを動的に更新するにはどうすればよいですか?
これまでのところ、膨大なインスタンスの助けを借りてTextViewの値を更新できましたが、メインメニューからアクティビティページに戻ってページを更新すると、更新されたTextViewしか見ることができません。
最後の解決策として、手動で行うことなく、getView()メソッド内のブーンリスナー内のアクティビティページを再起動するように設定しました。これは、ListViewアイテムボタンをクリックするたびにページが再読み込みされるのをユーザーが見ている最善の方法ではありません。
値を動的に更新する方法を教えてください。続き
は私のアダプタクラスのコードです:あなたは大文字で始まるクラス名を書いた場合、すべての
public adapter(Context context, int resource, ArrayList<value> objects)
{
super(context, resource, objects);
layout = resource;
array = objects;
}
@Override
public View getView(final int position, View convertView, final ViewGroup parent)
{
box = null;
db = new database(getContext());
if (convertView == null)
{
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(layout, null);
box = new holder();
box.X = (TextView) convertView.findViewById(R.id.valueName);
box.Y = (TextView) convertView.findViewById(R.id.valueNumber);
box.button = (Button) convertView.findViewById(R.id.itemDeleteButton);
box.button.setTag(position);
convertView.setTag(box);
}
else
{
box = (holder) convertView.getTag();
}
box.X.setText(getItem(position).getX());
box.Y.setText(String.valueOf(getItem(position).getY()));
box.button.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
View view = View.inflate(getContext(), R.layout.activity_plan, null);
list = (ListView) view.findViewById(R.id.listView);
month = (Spinner) view.findViewById(R.id.inputSpinner);
remainder = (TextView) view.findViewById(R.id.outputRemainder);
adapt = new adapter(getContext(), R.layout.activity_item, array);
array.remove(position);
month_is = month.getSelectedItem().toString();
db.removePlanData(month_is, position + 1);
notifyDataSetChanged();
cursor = db.getHelpDataRows(month_is);
cursor.moveToFirst();
val_is = Integer.parseInt(cursor.getString(cursor.getColumnIndex("value")));
remainder_is = val_is - db.getCurrent(month_is);
remainder.setText(String.valueOf(remainder_is));
// RESTARTING ACTIVITY TO SEE THE UPDATED TEXTVIEW VALUE OUTSIDE LISTVIEW.
Intent intent= new Intent(getContext(), plan.class);
getContext().startActivity(intent);
}
});
return convertView;
}
public class holder
{
TextView X;
TextView Y;
Button button;
}
あなたのコード –
を表示することができればそれは便利だろうが、あなたのコードを示しています。 – Chisko
あなたの返信をありがとう。私は以下のコードを投稿しました。返事が遅れて申し訳ありません。私はあなたの助けに感謝します! – Ras