2016-04-12 3 views
2

RecyclerView用のアダプタを設定しようとしています。 「注1」からのデータ入力を収集する文字列をRecyclerViewのonBindViewHolderでsetTextをどのように設定するのですか?

holder.todo.setText(dbList.get(position).getTodo()); 
holder.note1.setText(dbList.get(position).getNote1()); 

「TODO」とされている:「シンボルを解決できません 『TODO』と 『注1』」:

のAndroid Studioでこの2行すると、エラーメッセージを返します2つのEditTextを使用して

また、viewHolderが「ローカル変数viewHolderは冗長です」というエラーを表示しています。 お知らせください。

全ListAdaper.java

import android.content.Context; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import java.util.ArrayList; 
import java.util.List; 

public class ListAdapter extends RecyclerView.Adapter<ListAdapter.ListViewHolder> { 

List<DataModel> dbList = new ArrayList<>(); 
Context context; 
LayoutInflater mLayoutInflater; 

public ListAdapter(Context context, List<DataModel> dbList) { 
    this.context = context; 
    this.dbList = dbList; 
    mLayoutInflater = LayoutInflater.from(context); 
} 

@Override 
public ListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

    View convertView = mLayoutInflater.inflate(R.layout.singlecard_layout, parent, false); 
    ListViewHolder viewHolder = new ListViewHolder(convertView); 
    return viewHolder; 
} 

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 

     holder.todo.setText(dbList.get(position).getTodo()); 
     holder.note1.setText(dbList.get(position).getNote1()); 
} 

@Override 
public int getItemCount() { 
    return dbList.size(); 
} 

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

    public ListenerEditText todo,note1; 

    public ListViewHolder(View itemView) { 
     super(itemView); 

     todo = (ListenerEditText) itemView.findViewById(R.id.CEditText); 
     note1 = (ListenerEditText) itemView.findViewById(R.id.DEditText); 
     itemView.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
    } 
    } 
} 

全DataModel.java

public class DataModel { 

private String todo; 
private String note1; 

public String getTodo() { 
    return todo; 
} 

public void setTodo(String todo) { 
    this.todo = todo; 
} 

public String getNote1() { 
    return note1; 
} 

public void setNote1(String note1) { 
    this.note1 = note1; 
}  

答えて

3

すべてを行う必要が取るonBindViewHolder()の定義を変更であなたのListViewHolderタイプの代わりにRecyclerView.ViewHolder

@Override 
public void onBindViewHolder(ListViewHolder holder, int position) { 

     holder.todo.setText(dbList.get(position).getTodo()); 
     holder.note1.setText(dbList.get(position).getNote1()); 
} 

代替積極的に汎用のRecyclerView.ViewHolderを使用して、ViewHolderタイプにキャストすることができます。 1つのアダプターの行の異なる種類を使用する場合が一般的です:

「ローカル変数が冗長である」警告については
@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 

     ListViewHolder listViewHolder = (ListViewHolder) holder; 

     listViewHolder.todo.setText(dbList.get(position).getTodo()); 
     listViewHolder.note1.setText(dbList.get(position).getNote1()); 
} 

、それはちょうどあなたが代わりにローカル変数を作成するための1つの行にこれを統合したい:

@Override 
public ListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

    View convertView = mLayoutInflater.inflate(R.layout.abc_action_bar_title_item, parent, false); 
    return new ListViewHolder(convertView); 
} 

これは本当に役に立たない警告であることに注意してください。私はコードをそのままの状態に保ち、警告を無視します。

+0

わかりました。画面をあまりにも長く注視しています。 ListViewHolderに固有のものにして、ここでStringを参照してください!ありがとうございました。 viewHolderオブジェクトが「Local variable is redundant」を投げている理由についてのご意見はありますか? – AJW

+0

これは次の行です。 "ListViewHolder viewHolder = new ListViewHolder(convertView);" – AJW

+0

これはその行で定義され、次の行の "return viewHolder"とそれがファイル内にあります。 – AJW

0

その後ます。public void onBindViewHolder(パブリック静的クラスListViewHolderに、このパブリッククラスListViewHolder

を作りますRecyclerView.ViewHolderホルダー、

onBindViewHolderへ

(ListAdapter.ViewHolderホルダー

あなたが使用する必要がありますViewHolderあなたは、これがアウトに役立ちます

希望onBindViewHolder上に作成

+0

よろしくお願いします。 「public class ListViewHolder extends ...」を変更していますか? Public ListViewHolder onCreateViewHolderメソッドを変更しないでください。 – AJW

+0

はい、そのクラスをpublic staticに変更してから、あなたのonBindViewHolderパラメータを変更してください。 –

+0

私はポストコードを残念です。まだそれを正しく行う方法を知らない –

関連する問題