2016-05-12 38 views
-2

私はcardView recyclerView 動的に追加する必要があるアプリケーションに取り組んでいますが、それは動作しません。RecyclerViewにCardViewをAndroidに動的に追加する方法???

これは私のコードです: -

Button okBTN; 
    EditText enterCornerNumberET; 
    private RecyclerView mRecyclerView; 
    private CornerListAdapter mAdapter; 
public int cornervalue; 


protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.corner_list); 


    okBTN = (Button)findViewById(R.id.okBTN); 

     enterCornerNumberET = (EditText)findViewById(R.id.enterCornerNumberET); 

mRecyclerView = (RecyclerView)findViewById(R.id.recycler_view); 


mRecyclerView.setHasFixedSize(true); 
     mLayoutManager = new LinearLayoutManager(this); 
     mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); 
     mRecyclerView.setLayoutManager(mLayoutManager); 


okBTN.setOnClickListener(this); 


    @Override 
    public void onClick(View v) { 

     switch (v.getId()){ 

case R.id.okBTN: 

       cornervalue = Integer.valueOf(enterCornerNumberET.getText().toString().trim()); 

       Toast.makeText(CornerListActivity.this, ""+cornervalue, Toast.LENGTH_SHORT).show(); 

       createCornerList(cornervalue); 

       /*if(enterCornerNumberET.getText().toString().trim()==null){ 


        Toast.makeText(CornerListActivity.this, "Please enter corner number", Toast.LENGTH_SHORT).show(); 

       }else{ 

        createCornerList(cornervalue); 

       }*/ 


       break; 

} 
} 

private void createCornerList(int cornervalue) { 


     for (int i = 0; i < cornervalue; i++) { 

      mAdapter=new CornerListAdapter(this,roofCornerArrayList); 
      mRecyclerView.setAdapter(mAdapter); 
     } 
    } 

顔をしていると私は私がここでやって何を間違えお知らせください。前もって感謝します。 :)

+0

任意のコメントsir ?? – Devraj

答えて

-1

RecyclerViewの使用方法は、hereで確認できます。データが変更された後、アダプタのnotifyDataSetChanged()を呼び出してビューを更新することができます。

+0

バディー私はrecyclerViewの使い方を知っています。私がここで何を求めているか注意深く見てください。 – Devraj

+0

'mRecyclerView.setAdapter(mAdapter);の後に' mAdapter.notifyDataSetChanged'を追加しようとしましたか? – am110787

+0

あなたのアダプタコードも投稿してください。 – am110787

0

私のコードでは、RecyclerViewにCardViewを、RecyclerViewにLayoutを設定しました。私はStaggeredGridLayoutManagerを使用しています。

ここに私のコードではdataModel.java(モデルクラス)

private String first; 

public String getFirst() { 
    return first; 
} 
public void setFirst(String first) { 
    this.first = first; 
} 
    public dataModel() 
    {} 

MainActivity.java

public class MainActivity extends AppCompatActivity { 

RecyclerView recyclerView; 
List<dataModel> list; 
AdapterViewHolder adapterViewHolder; 
dataModel[] dataModels; 
String[] first = {"QUICK CAULIFLOWER TABBOULESH", 
     "GRILLED CORN WITH MISO BUTTER"}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main_activity); 
    recyclerView = (RecyclerView) findViewById(R.id.recylcerView); 
    int length=first.length; 
    dataModels = new dataModel[length]; 
    list = new ArrayList<>(); 
    for (int i = 0; i < length; i++) { 
     dataModels[i] = new dataModel(); 
     dataModels[i].setFirst(first[i]); 
     dataModels[i].setDescription(second[i]); 
     dataModels[i].setImage(image[i]); 
     list.add(dataModels[i]); 
    } 
    adapterViewHolder = new AdapterViewHolder(list, MainActivity.this); 
    recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL)); 
    recyclerView.setAdapter(adapterViewHolder); 
} 
} 

AdapterViewHolder.java

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

private List<dataModel> list; 
private Context context; 

public AdapterViewHolder(List<dataModel> list, Context context) { 
    this.list = list; 
    this.context = context; 
} 

@Override 
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout, parent, false); //inflate layout in view 
    return new ViewHolder(view); //return holder 
} 

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 
    ((ViewHolder) holder).textViewFirst.setText(list.get(position).getFirst()); 
} 

@Override 
public int getItemCount() { 
    return list.size(); 
} 
public class ViewHolder extends RecyclerView.ViewHolder { 
    TextView textViewFirst; 

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

、私は、文字列変数の配列を設定していますCardViewで、そしてCardViewがRecyclerViewで設定された後。 RecyclerViewでSet CardViewのために、私は1つのAdapterViewHolderを使用しています。 AdapterViewHolderクラスはRecyclerView.Adapterを拡張し、layout.xmlには1つのtextViewを含むcardViewが含まれます。 AdapterViewHolderのonCreateViewHolder()では、layout.xmlファイルをinflateし、onBindViewHolder()メソッドでtextViewのdataModelクラスの値をバインドしています。最後に、MainActivity.javaで、私はRecyclerViewにAdapterViewHolderを設定しました。

関連する問題