Can one use cardview for listview item and how

后端 未结 4 1378
南旧
南旧 2020-12-16 18:47

I would like to implement CardView in my app so that all ListView items are CardViews. Is it as simple as encapsulating a ListVi

4条回答
  •  爱一瞬间的悲伤
    2020-12-16 19:27

    It's better to use CardView with RecyclerView, here is an example.

    • activity_main.xml (it contains the recyclerview)

       
       
           
      
      
    • cardview.xml

      
      
          
      
      
    • buid.gradle(Module:app)

      dependencies {
          compile fileTree(dir: 'libs', include: ['*.jar'])
          testCompile 'junit:junit:4.12'
          compile 'com.android.support:appcompat-v7:23.3.0'
          compile 'com.android.support:cardview-v7:23.0.+'
          compile 'com.android.support:recyclerview-v7:23.0.+'
      }
      
    • RecyclerViewAdapter.java

      public class RecyclerViewAdapter extends RecyclerView.Adapter {
          public ArrayList myValues;
          public RecyclerViewAdapter (ArrayList myValues){
              this.myValues= myValues;
          }
      
          @Override
          public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
              View listItem = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview.xml, parent, false);
              return new MyViewHolder(listItem);
          }
      
          @Override
          public void onBindViewHolder(MyViewHolder holder, int position) {
               holder.myTextView.setText(myValues.get(position));
          }
      
      
          @Override
          public int getItemCount() {
              return myValues.size();
          }
      
          public static class MyViewHolder extends RecyclerView.ViewHolder {
              private TextView myTextView;
              public MyViewHolder(View itemView) {
                  super(itemView);
              myTextView = (TextView)itemView.findViewById(R.id.text_cardview);
              }
          }
      }
      
    • MainActivity.java

      public class MainActivity extends AppCompatActivity {
      
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
      
          ArrayList myValues = new ArrayList();
      
          //Populate the ArrayList with your own values
          myValues.add("KitKat");
          myValues.add("Lollipop");
          myValues.add("Marshmallow");
      
          RecyclerViewAdapter adapter = new RecyclerViewAdapter(myValues);
          RecyclerView myView =  (RecyclerView)findViewById(R.id.recyclerview);
          myView.setHasFixedSize(true);
          myView.setAdapter(adapter);
          LinearLayoutManager llm = new LinearLayoutManager(this);
          llm.setOrientation(LinearLayoutManager.VERTICAL);
          myView.setLayoutManager(llm);
       }     
       }
      

    Refer to this tutorial for more details: A Guide to Android RecyclerView and CardView

提交回复
热议问题