2016-11-02 9 views
2

RcyclerViewとそのアダプターを以下のように作成しました。RecyclerView with Dynamic 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のViewHolderは

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にフォーカスが当たって、新しいものをもう一度追加してから、最初にフォーカスを当て、最後に1つ、そして最初に1つ···など... gifを参照してください。ここで

enter image description here

それは最初のEditTextに行くべきではありません。

この問題をどのように安定させるかわかりません。どんな助力も高く評価されます。

+0

最後の2番目の段落は本当に混乱しています。それをもっときれいにしてもらえますか? – Nabin

+0

@NabinKhadka、1分をあげて、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を使用する代わりにアダプタを設定するのが適切です。 –