Android 晶圆厂及;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

我有一个包含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="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