您好,我创建了一个Android应用程序,在其中使用CustomAdapter在ListView中添加了一些按钮和图像。
我的文件结构是:
layout
[1] album ->List View
[2] album_list -> Button
那么我如何创建Button对象呢?
我的代码是:
album.xml
<GridLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="1" >
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_column="0"
android:layout_gravity="left|top"
android:layout_row="0" >
</ListView>
</GridLayout>
album_list.xml
<RelativeLayout
android:id="@+id/RelativeLayout001"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="2"
android:orientation="horizontal" >
<Button
android:id="@+id/btn_eng"
style="?android:attr/buttonStyleSmall"
android:layout_width="100px"
android:layout_height="31px"
android:layout_marginLeft="11dp"
android:layout_marginRight="17dp"
android:layout_marginBottom="5dp"
android:layout_marginTop="35dp"
android:layout_alignTop="@+id/btn_hindi"
android:layout_alignBottom="@+id/ImageView12"
android:layout_alignLeft="@+id/ImageView12"
android:background="@drawable/normal"
android:text="ENG"
android:textColor="@android:color/white" />
<TextView
android:id="@+id/tv_albumname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/tv_go"
android:layout_alignTop="@+id/iv_album_image"
android:layout_marginLeft="2dp"
android:layout_marginTop="2dp"
android:text="Album Name"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@android:color/white" />
<Button
android:id="@+id/btn_hindi"
style="?android:attr/buttonStyleSmall"
android:layout_width="100px"
android:layout_height="31px"
android:layout_marginTop="7dp"
android:layout_marginRight="17dp"
android:layout_alignTop="@+id/ImageView12"
android:layout_alignLeft="@+id/btn_eng"
android:background="@drawable/normal"
android:text="HINDI"
android:textColor="@android:color/white" />
</RelativeLayout>
相册.java
Album_List_Custom_Adapter adapter =
new Album_List_Custom_Adapter(getApplicationContext(), albumList);
lv.setAdapter(adapter);
Album_List_Custom_Adapter.java
private Context context;
ArrayList<HashMap<String, String>> listAlbum;
ViewHolder vholder;
private OnClickListener listener;
public Album_List_Custom_Adapter(Context context, ArrayList<HashMap<String, String>> albumList)
{
this.context = context;
this.listAlbum=albumList;
}
@Override
public int getCount()
{
return listAlbum.size();
}
@Override
public Object getItem(int position)
{
return null;
}
@Override
public long getItemId(int position)
{
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View vi=convertView;
if (convertView == null)
{
vi = inflater.inflate(R.layout.home_list_model, null);
vholder = new ViewHolder();
vholder.hindi=(Button)vi.findViewById(R.id.btn_hindi);
vholder.eng=(Button)vi.findViewById(R.id.btn_eng);
vholder.tv_album_name = (TextView) vi.findViewById(R.id.tv_albumname);
vi.setTag(vholder);
}
else
{
vholder = (ViewHolder) (vi.getTag());
}
vholder.hindi.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
vholder.hindi.setBackgroundResource(R.drawable.selected);
vholder.eng.setBackgroundResource(R.drawable.normal);
}
});
vholder.hindi.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
v.setBackgroundResource(R.drawable.selected);
vholder.eng.setBackgroundResource(R.drawable.normal);
}
});
vholder.eng.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
v.setBackgroundResource(R.drawable.selected);
vholder.hindi.setBackgroundResource(R.drawable.normal);
}
});
vholder.tv_album_name.setText(listAlbum.get(position).get("album"));
return vi;
}
static class ViewHolder
{
TextView tv_album_name;
Button eng, hindi;
}
您必须在要扩展列表项布局的适配器中创建按钮对象。
喜欢
Button b = (Button)yourViewobject.findViewById(R.id.button1);
现在为此实现onClick事件
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
编辑:使用此。在名为mybutton.xml的可绘制文件夹中创建一个自定义文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/selected" android:state_selected="true"></item>
<item android:drawable="@drawable/normal"></item>
</selector>
现在,只需在您的自定义布局文件中为两个按钮设置背景。
android:background="@drawable/mybutton" // for Hindi Button
和英文按钮一样。
现在也从适配器中删除onClick事件方法。
需要改变..
<Button
android:id="@+id/btn_eng"
style="?android:attr/buttonStyleSmall"
android:layout_width="100px"
android:layout_height="31px"
android:layout_marginLeft="11dp"
android:layout_marginRight="17dp"
android:layout_marginBottom="5dp"
android:layout_marginTop="35dp"
android:clickable = "true"
android:focusable = "true"
android:layout_alignTop="@+id/btn_hindi"
android:layout_alignBottom="@+id/ImageView12"
android:layout_alignLeft="@+id/ImageView12"
android:background="@drawable/mybutton"
android:text="ENG"
android:textColor="@android:color/white" />
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句