2017-03-21 63 views
0

我有一個listview哪個項目包含fab & textview。在ListViewItem的佈局代碼波紋管: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"); 
     } 
    }); 
} 

當所有晶圓廠去除,我使用的是項目點擊工作超過一個TextView的列表視圖就好了。但是,當使用項目點擊列表視圖的晶圓廠完全無法使用時。根據我在互聯網上閱讀的內容,必須設置爲false,但這不適用。任何人都知道如何把晶圓廠作爲列表視圖項目,並使textview & fab clickable?

注:我是新手

+1

你可以張貼列表視圖適配器代碼? – jemsnaban

+0

我已經編輯我的問題並添加它。目前我只是使用simplecursoradapter。但是我打算在解決這個問題後創建自定義適配器。 – user3931627

+0

我想我必須使用自定義的簡單遊標適配器。有任何與cursorloader和自定義簡單遊標適配器相關的鏈接? – user3931627

回答

0

您可以使用RecyclerView。我在這裏使用String模型,但您可以稍後使用您自己的自定義模型。要填充(項目)列表,您需要創建自定義適配器和自定義視圖(就像您一樣)。下面是自定義適配器:

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); 

} 

在XML文件中:

<android.support.v7.widget.RecyclerView 
    android:padding="5dp" 
    android:id="@+id/recyclerview" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

在你的活動:

​​3210
+0

你說得對,我應該使用recyclerview。 – user3931627

+0

你解決了這個問題嗎? @ user3931627 – jemsnaban

+0

我還沒有測試過。我不得不更新我的整個代碼來支持recyclerview,數據綁定。但是從我從網上讀到的你的回答應該是正確的。感謝@jemsnaban – user3931627