обновить текстовое представление в адаптере из действия - PullRequest
0 голосов
/ 13 сентября 2018

Я хочу обновить TextView в адаптере (textViewNum) из действия SlotsActivity, когда я нажал кнопку "btn"

Как я могу получить доступ к TextView ?? имейте в виду, что listItems не пустой.

Вот мой Activity код:

public class SlotsActivity extends AppCompatActivity{

private RecyclerView recyclerView;
private MyAdapter adapter;
private List<ListItem> listItems;
private Button btn;

@SuppressLint("WrongViewCast")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_slots);
    recyclerView = findViewById(R.id.recyclerview);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    listItems = new ArrayList<>();
    ....

    btn=findViewById(R.id.btn);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //i want to update the textview here
        }
    });

}

А вот и мой Adapter:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {

    private List<ListItem> listItems ;
    private Context context;

    public MyAdapter(List<ListItem> listItems, Context context) {
        this.listItems = listItems;
        this.context = context;
    }
    ....

    @Override
    public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
        final ListItem listItem= listItems.get(position);
        //**I want to update this textView**
        holder.textViewNum.setText("N° slot : "+listItem.getNum()+"");
    }
      ....

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

        public TextView textViewNum;

        public ViewHolder(View itemView) {
            super(itemView);
            textViewNum = itemView.findViewById(R.id.textViewNum);
        }
    }
   }

Ответы [ 4 ]

0 голосов
/ 13 сентября 2018

https://stackoverflow.com/a/52307995/8316499

проверьте эту ссылку

просто передайте свои значения в методе ниже, написанном в адаптере

  public void addExploreItem(String item, Arraylist<String> textviewvalues) {

this.textviewvalues = textviewvalues
count = Integer.parseInt(item);
notifyDataSetChanged();

  }
0 голосов
/ 13 сентября 2018

Попробуйте эту идею

// i is index of item u want to change text
View v = getViewByPosition(i,listView);
// then check if i is odd set background color with what u want
v.findViewById(R.id.text_view).text("what u want");


public View getViewByPosition(int position, RecyclerView listView) {
final int firstListItemPosition = listView.getFirstVisiblePosition();
final int lastListItemPosition =firstListItemPosition + 
listView.getChildCount() - 1;

if (position < firstListItemPosition || position > lastListItemPosition ) {
return listView.getAdapter().getView(position, 
listView.getChildAt(position), listView);
} else {
final int childIndex = position - firstListItemPosition;
return listView.getChildAt(childIndex);
}
}
0 голосов
/ 13 сентября 2018
btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
         listItems.add("Apple");
         adapter.notifyDataSetChanged();
        //i want to update the textview here
    }
});

При этом значение будет сохранено в массиве.

Надеюсь, вы добавили в свой код следующую строку.

adapter = new MyAdapter(listItems,SlotsActivity.this);

надеюсь, это поможет.

0 голосов
/ 13 сентября 2018

Одним из методов является использование ViewHolder в качестве дочернего класса SlotsActivity и объявление переменной TextView в родительском классе.Как

public class SlotsActivity extends AppCompatActivity{
private RecyclerView recyclerView;
private MyAdapter adapter;
....
TextView txtView;
.....
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

public ViewHolder(View itemView) {
    super(itemView);
    textView = itemView.findViewById(R.id.textViewNum);
}}}

Таким образом, вы можете получить доступ и можете изменить значение TextView.

...