2016-11-07 2 views
-1

В том же макете действий у меня есть поле TextView и ListView с кнопкой на каждом из элементов. В моем адаптере массива ListView у меня есть метод прослушивания кнопки внутри метода getView(), где я пытаюсь «динамически» обновлять значение поля TextView, упомянутого выше.Как я могу динамически обновлять поле TextView из кнопки ListView?

До сих пор я смог обновить значение TextView с помощью надутого экземпляра, но я могу видеть только обновленный TextView, когда обновляю страницу, пересматривая страницу активности из главного меню.

Как последнее разрешение, я установил его, чтобы перезапустить страницу активности внутри слушателя бутона внутри метода getView(), не выполняя его вручную. Это не лучший способ, так как пользователь может видеть, как страница перезагружается каждый раз, когда он нажимает кнопку «Элемент списка».

Не могли бы вы дать мне знать, как я могу динамически обновлять значение?

Ниже мой адаптер код класса:

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; 
} 
+1

Было бы полезно, если бы вы могли бы показать код –

+0

показать код. – Chisko

+0

Спасибо за ваши ответы. Я разместил свой код ниже. Извините за задержку с ответом. Я ценю вашу помощь! – Ras

ответ

0

Прежде всего, было бы лучше, если вы пишете имена классов начинаются с заглавной буквы. Затем, насколько я понимаю, ваша ситуация такова: когда вы нажимаете кнопку на элементе listView, вы можете изменить текст textView вне listView. Это можно сделать, сделав в вашей деятельности textViewpublic static, чтобы вы могли получать доступ из других классов. Для экс:

MainActivity.textView.setText("something"); 

В вашей основной деятельности сделать TextView public static:

public static TextView textView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.viloyatlat_frame); 

    textView = (TextView)findViewById(R.id.textView); 

} 
+0

Спасибо, Абдуазиз. Я вижу вашу мысль. Позвольте мне попробовать это дальше. – Ras

+0

Если это помогло, пожалуйста, примите мой ответ. Счастливое кодирование, Рас! –

+0

Это сделало трюк. Благодаря! – Ras

Смежные вопросы