2016-03-28 4 views
0

Я пытаюсь преобразовать свое приложение в версию Android, и я немного новичок в android. У меня есть список, в котором элементы включают кнопки. Это список пользователей, и вы можете следить за каждым пользователем, когда нажата кнопка, только в элементе, включая кнопку, текст кнопки должен включаться в «следовать». Извлечение списка работает нормально, но с моим кодом ниже текст кнопки не меняется. Как я могу это сделать? Большое спасибо.Android Listview - Изменить текст кнопки элемента после нажатия

private class MyListAdapter extends ArrayAdapter<String> { 
    public MyListAdapter() { 
     super(getActivity().getApplicationContext(), R.layout.fragment_users_cell, myItemList); 
    } 

     @Override 
     public View getView(final int position, View convertView, ViewGroup parent) { 
      View cellView = convertView; 

      if (cellView == null){ 
       cellView = getActivity().getLayoutInflater().inflate(R.layout.fragment_users_cell, parent, false); 
      } 

      profileBtn = (Button) cellView.findViewById(R.id.fragment_users_cell_profileBtn); 
      followBtn = (Button) cellView.findViewById(R.id.fragment_users_cell_followBtn); 

      profileBtn.setText(myItemList.get(position)); 


      profileBtn.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        System.out.println(myItemList.get(position)); 

        System.out.println(position); 

       } 
      }); 


      followBtn.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        System.out.println(myItemList.get(position)); 

        profileBtn.setText("followed"); 

       } 
      }); 



      return cellView; 

     } 

    } 
+0

Вы должны сохранить эту информацию (состояние кнопки) внутри элемента списка, который вы PAS в ListView – GVillani82

+0

Здравствуйте Иосиф, как я могу это сделать? Можете ли вы помочь мне с образцом? – saner

ответ

3

Вы должны обновить свой набор данных и refersh список после внесения изменений, так что она отражает последние изменения. В вашем случае текст изменяется.

followBtn.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        profileBtn.setText("followed"); 
        myItemList.add(position, "followed");//Change your dataset 
        notifyDataSetChanged(); //And refresh the adapter  
       } 
      }); 
+0

Спасибо Shadap, а не «добавить». Я использовал «set», и все выглядит нормально. – saner

+0

Прохладный. Приятно знать, что. –

0

вам необходимо изменить значение в myItemList так что в следующий раз, когда вид нагрузки, значение из списка устанавливается в виде текста на кнопке профиля приходит который IX с последующим то вам необходимо обновить список по нажатию кнопки наблюдения и уведомите ListView.

followBtn.setOnClickListener(new View.OnClickListener(){ 

    @Override 
    public void onClick(View v) { 
     System.out.println(myItemList.get(position)); 
     myItemList.get(position).set("followed"); 
     profileBtn.setText("followed"); 
    } 
}); 
+0

Hi Ashim, myItemList.get (position) .set ("follow"); , s не работает, получение ошибки «не может разрешить метод». – saner

+0

вам нужно обновить значение этого пользователя в списке от следующего к следующему. myItemList.set (position, "follow"); –

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