Android 晶圆厂及;Textview作为ListViewItem
我有一个包含fab和textview的列表视图。listviewitem布局代码如下所示:Android 晶圆厂及;Textview作为ListViewItem,android,Android,我有一个包含fab和textview的列表视图。listviewitem布局代码如下所示: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.FloatingActionButton
android:id="@+id/fabActiveStat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="0dp"
android:clickable="true"
android:focusable="false"
app:fabSize="mini"
app:srcCompat="@drawable/ic_done" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fabEdit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="0dp"
android:layout_toEndOf="@+id/fabActiveStat"
android:layout_toLeftOf="@+id/fabActiveStat"
android:clickable="true"
android:focusable="false"
app:fabSize="mini"
app:srcCompat="@android:drawable/ic_menu_edit" />
<TextView
android:id="@+id/tvDesc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/fabEdit"
android:layout_centerVertical="true"
android:layout_marginLeft="0dp"
android:layout_marginStart="0dp"
android:layout_toEndOf="@+id/fabEdit"
android:maxLines="1"
android:text=""
android:textSize="17sp"
android:clickable="true"
android:focusable="false"
android:textStyle="bold" />
</RelativeLayout>
适配器代码如下所示:
ctx = getActivity();
// The desired columns to be bound
AScolumns = new String[]{
//dbHandler.COLUMN_ID,
dbHandler.COLUMN_CATEGORY,
//dbHandler.COLUMN_ACTIVE_STATUS
};
AIto = new int[]{
//R.id.fabActiveStat,
R.id.tvDesc,
//R.id.fabEdit
};
dbHandler = new databaseHandler(ctx, null, null, 1);
csAdapter = new SimpleCursorAdapter(ctx, R.layout.view_categ_data, null, AScolumns, AIto, 0);
lvCategory.setAdapter(csAdapter);
getLoaderManager().initLoader(0, null, this);
lvCategory.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d(TAG, "Listview di click");
}
});
}
ctx=getActivity();
//要绑定的所需列
AScolumns=新字符串[]{
//dbHandler.COLUMN_ID,
dbHandler.COLUMN_类别,
//dbHandler.COLUMN\u活动\u状态
};
AIto=新整数[]{
//R.id.fabActiveStat,
R.id.tvDesc,
//R.id.fabEdit
};
dbHandler=newdatabasehandler(ctx,null,null,1);
csAdapter=new SimpleCursorAdapter(ctx,R.layout.view_categ_数据,null,AScolumns,AIto,0);
lvCategory.setAdapter(csAdapter);
getLoaderManager().initLoader(0,null,this);
lvCategory.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Log.d(标记“Listview di click”);
}
});
}
当所有的晶圆厂删除,我使用一个以上的textview listview项目点击工作刚刚好。但是当工厂在项目上使用listview时,单击根本不起作用。根据我在互联网上读到的内容,focusable必须设置为false,但这不起作用。有人知道如何把晶圆厂作为列表视图项目,并使文本视图和晶圆厂可点击吗
注意:我是新手您可以使用
RecyclerView
。我在这里使用字符串模型,但您可以稍后使用自己的自定义模型。要填充(项目)列表,您需要创建自定义适配器和自定义视图(就像您所做的那样)。以下是自定义适配器:
public abstract class CustomAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context context;
private List<String> data;
private LayoutInflater inflater;
public CustomAdapter(Context context, List<String> data) {
this.context = context;
this.data = data;
this.inflater = LayoutInflater.from(context);
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.custom_view, parent, false); //use your custom view here
return new BodyViewHolder(view);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
String model = data.get(position);
BodyViewHolder body = (BodyViewHolder) holder;
body.populate(model);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemCount() {
return data.size();
}
class BodyViewHolder extends RecyclerView.ViewHolder {
TextView tvDesc;
FloatingActionButton btn_edit;
FloatingActionButton btn_active;
ImageView imageView;
public BodyViewHolder(View itemView) {
super(itemView);
tvDesc = (TextView) itemView.findViewById(R.id.tvDesc);
btn_active = (FloatingActionButton) itemView.findViewById(R.id. fabActiveStat);
btn_edit = (FloatingActionButton) itemView.findViewById(R.id.fabEdit);
}
public void populate(final String model) {
tvDesc.setText(model);
btn_edit.setOnClickListener(view -> onModelClick(model));//firing listener to btn_edit, call the abstract method
}
}
public abstract void onModelClick(ProductModel model);
}
公共抽象类CustomAdapter扩展了RecyclerView.Adapter{
私人语境;
私人名单数据;
私人充气机;
公共CustomAdapter(上下文、列表数据){
this.context=上下文;
这个数据=数据;
this.inflater=layoutiner.from(上下文);
}
@凌驾
public RecyclerView.ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图=充气机。充气(R.layout.custom_视图,父视图,false);//在此处使用自定义视图
返回新的BodyViewHolder(视图);
}
@凌驾
BindViewHolder上的公共无效(RecyclerView.ViewHolder,int位置){
字符串模型=data.get(位置);
BodyViewHolder车身=(BodyViewHolder)支架;
body.populate(模型);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
public int getItemCount(){
返回data.size();
}
类BodyViewHolder扩展了RecyclerView.ViewHolder{
文本视图tvDesc;
浮动操作按钮btn_编辑;
浮动操作按钮btn_激活;
图像视图图像视图;
public BodyViewHolder(视图项视图){
超级(项目视图);
tvDesc=(TextView)itemView.findViewById(R.id.tvDesc);
btn_active=(FloatingActionButton)itemView.findViewById(R.id.fabActiveStat);
btn_edit=(FloatingActionButton)itemView.findViewById(R.id.fabEdit);
}
公共空白填充(最终字符串模型){
tvDesc.setText(模型);
btn_edit.setOnClickListener(view->onModelClick(model));//将侦听器触发到btn_edit,调用抽象方法
}
}
ModelClick(ProductModel模型)上的公共抽象无效;
}
在xml文件中:
<android.support.v7.widget.RecyclerView
android:padding="5dp"
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
在您的活动中:
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
List<String> listProduct = new ArrayList<>();
CustomAdapter adapterProduct = new CustomAdapter(getApplicationContext(), listProduct) {
@Override
public void onModelClick(String model) {
//your custom action
}
};
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setNestedScrollingEnabled(false);
recyclerView.setAdapter(adapterProduct);
//add some data to the ArrayList
adapter.notifyDataSetChanged();
RecyclerView RecyclerView=(RecyclerView)findViewById(R.id.RecyclerView);
List listProduct=new ArrayList();
CustomAdapter adapterProduct=新的CustomAdapter(getApplicationContext(),listProduct){
@凌驾
模型单击上的公共void(字符串模型){
//您的自定义操作
}
};
recyclerView.setLayoutManager(新的LinearLayoutManager(本));
recyclerView.setNestedScrollingEnabled(false);
recyclerView.setAdapter(adapterProduct);
//向ArrayList添加一些数据
adapter.notifyDataSetChanged();
你能发布listview适配器代码吗?我已经编辑了我的问题并添加了它。目前我只使用simplecursoradapter。但我计划在这个问题解决后创建自定义适配器。我想我必须使用自定义的简单游标适配器。是否有与cursorloader和自定义简单光标适配器相关的链接?是否搜索了有关RecyclerView
?你可以先用谷歌搜索一下,然后在下面检查我的答案。我还没有测试过。我必须更新我的全部代码以支持recyclerview和数据绑定。但从我从网上看到的情况来看,你的答案应该是正确的。谢谢@jemsnaban