2016-04-08 21 views
1

Android Studio'da kart kavramını kullanmam gereken bir kart oluşturuyorum ve kartın bir kişinin resmini ve resmin altındaki kişinin adını ve kartların bir ızgara, örneğin android marshmallow'un her bir temasın ızgara görünümünde bir kiremit gibi göründüğü kişi listesi.Android'de kart görünümünü dinamik olarak kullanma

Farklı olası yolları denedim ancak düzeltemediğim için lütfen bu konuda bana yardımcı olun. Bir kartım üretilen ama kişi sayısına göre otomatik olarak oluşturulur gereken bir kiremitli şeklinde dört fazla kart ihtiyaç nasıl This is the Image of how the final output should look like.

<android.support.v7.widget.CardView 
     android:layout_width="104dp" 
     android:layout_height="wrap_content" 
     android:id="@+id/cardview"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingLeft="25dp" 
      android:src="@drawable/calendar_screen_launch_forcard" 
      android:id="@+id/coach_img" 
      android:paddingTop="5dp" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_toRightOf="@+id/person_name" 
      android:text="Mark Linonel Jr" 
      android:textSize="10dp" 
      android:singleLine="false" 
      android:paddingTop="70dp" 
      android:paddingLeft="20dp" 
      android:background="#00000000" /> 
    </android.support.v7.widget.CardView> 

Bu.

Teşekkürler.

+0

Oldukça kolay bir şekilde yapmak için bir RecyclerView ve bir adaptör kullanabilirsiniz, buna ihtiyacınız varsa geliştirilmiş bir cevap yazabilirim. – xNeyte

+0

evet lütfen, bu gerçekten yararlı olur. teşekkür ederim –

cevap

1

kullanın böyle bir GridLayoutManager (Android RecyclerView) ile RecyclerView:

MyAdapter adapter = new MyAdapter(dataset); 
recyclerView.setAdapter(adapter); 
:

RecyclerView recyclerView = findViewById(R.id.my_recyclerview); 
GridLayoutManager layoutManager = new GridLayoutManager(context, 2); 
recyclerView.setLayoutManager(layoutManager); 

O zaman kendi sınıf yapmak RecyclerView.Adapter uzanır ve cardview.xml düzenini şişirir ve RecyclerView olarak ayarlayın MyAdapter

Bunun nasıl yapılacağı hakkında ayrıntılı açıklama içeren güzel bir kılavuz için bkz. this link

1

Bunu GridView kullanarak kolayca yapabilirsiniz. cardview'unuzu yerleştireceğiniz özel bir adaptör sınıfına ihtiyacınız var.

Bu, bu

public class MainActivity extends Activity { 
    GridView grid; 
    String[] name = { 
            "Google", 
            "Github", 
            "Instagram", 
            "Facebook" 
            
  
    } ; 
    int[] imageId = { 
            R.drawable.image1, 
            R.drawable.image2, 
            R.drawable.image3, 
            R.drawable.image4            
  
    }; 
  
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
  
        CustomGrid adapter = new CustomGrid(MainActivity.this, name, imageId); 
        grid=(GridView)findViewById(R.id.grid); 
                grid.setAdapter(adapter); 
                grid.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
  
                    @Override 
                    public void onItemClick(AdapterView<?> parent, View view, 
                                            int position, long id) { 
                        Toast.makeText(MainActivity.this, "You Clicked at " +name[+ position], Toast.LENGTH_SHORT).show(); 
  
                    } 
                }); 
  
    } 
  
} 

gibi faaliyetinden adaptör sınıfına

public class CustomGrid extends BaseAdapter{ 
    private Context mContext; 
    private final String[] web; 
    private final int[] Imageid; 

    public CustomGrid(Context c,String[] web,int[] Imageid) { 
     mContext = c; 
     this.Imageid = Imageid; 
     this.web = web; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return web.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     View grid; 
     LayoutInflater inflater = (LayoutInflater) mContext 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     if (convertView == null) { 

      grid = new View(mContext); 
      grid = inflater.inflate(R.layout.grid_single, null); 
      TextView textView = (TextView) grid.findViewById(R.id.grid_text); 
      ImageView imageView = (ImageView)grid.findViewById(R.id.grid_image); 
      textView.setText(web[position]); 
      imageView.setImageResource(Imageid[position]); 
     } else { 
      grid = (View) convertView; 
     } 

     return grid; 
    } 

}

çağrı bu adaptör sınıfının örnek kod, link 2

bu öğretici link 1 izlemektir
İlgili konular