2016-11-02 4 views
2

Я создал свой RcyclerView и его адаптер, как показано ниже. ViewHolderRecyclerView с динамическим Edittext

RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView); 
recyclerView.setLayoutManager(new LinearLayoutManager(this)); 
recyclerView.setHasFixedSize(true); 

final ArrayList<String> list = new ArrayList<>(); 
final RecyclerViewAdapter adapter = new RecyclerViewAdapter(list); 
recyclerView.setAdapter(adapter); 
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     int count = list.size(); 
     list.add(count + " * 10 = " + (count * 10)); 
     adapter.notifyDataSetChanged(); 
    } 
}); 

И мои adapter «ы это

class ViewHolder extends RecyclerView.ViewHolder { 
    EditText item; 

    ViewHolder(View itemView) { 
     super(itemView); 
     item = (EditText) itemView.findViewById(R.id.item); 
     item.requestFocus(); //I want my last row's EditText get focused automatically. 
    } 
} 

Так что я хочу, чтобы мой последний EditText сфокусироваться автоматически. Но когда я добавляю новый последний edittext, вы фокусируетесь, а добавляете новый, а затем сначала фокусируетесь, затем последний, затем первый ... и т. Д. Пожалуйста, обратитесь к gif.

enter image description here

Здесь он не должен идти в первый EditText.

Я не знаю, как стабилизировать эту проблему. Любая помощь будет высоко оценена.

+0

Второй последний абзац действительно сбивает с толку. Не могли бы вы прояснить ситуацию? – Nabin

+0

@NabinKhadka, Дайте мне одну минуту, я загружу gif – Gunaseelan

+0

@NabinKhadka, Добавлено GIF, пожалуйста, обратитесь к нему. – Gunaseelan

ответ

3

Используя следующий метод, я достиг цели. Спасибо всем, кто пытался мне помочь.

@Override 
public void onViewAttachedToWindow(ViewHolder holder) { 
    super.onViewAttachedToWindow(holder); 
    if (holder.item != null && holder.item.getText().length() == 0) { 
     holder.item.requestFocus(); 
    } 
} 
+0

почему это произошло? –

+1

@ Androidjack, Это большая история, я не знаю, как это объяснить. – Gunaseelan

+0

В onclick-методе, если мы снова установим адаптер, он работает. Правильно установить адаптер вместо использования notifyDataSetChanged. –

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