【问题标题】:How to set click listener for button in listview in Fragment onCreateView()如何在片段 onCreateView() 中为列表视图中的按钮设置单击侦听器
【发布时间】:2018-05-08 13:27:36
【问题描述】:

我有一个带有 listview 的片段。我正在使用包含 textview 和 imagebutton 的列表项填充 lisview。我想在片段的 onCreateView() 中的 listitem 按钮上设置 onClickListener。我正在使用 Cursoradapter 和 list_item.xml 填充列表。但我无法在 onCreateView() 中获得对这个按钮的引用,因为按钮不是膨胀布局的一部分,而是 list_item.xml 的一部分。如何在 listitem 按钮上设置点击侦听器。感谢任何帮助。 这是我的片段:

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
       rootView = inflater.inflate(R.layout.activity_account, container, false);
 accountListView = (ListView)rootView. findViewById(R.id.list);
    mCursorAdapter = new accountCursorAdapter(getActivity(), null);
        accountListView.setAdapter(mCursorAdapter);

// I want to set click listener on button here.Button is in list_item.xml

// 使我的光标适配器膨胀。

   return rootView;
    }

我的适配器类: 公共类 accountCursorAdapter 扩展 CursorAdapter {

@SuppressWarnings("deprecation")

public accountCursorAdapter(Context context, Cursor c) { 超级(上下文,c);

}

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
    // Inflate a list item view using the layout specified in list_item.xml
    return LayoutInflater.from(context).inflate(R.layout.list_item, parent, false);

}

@Override
public void bindView(View view, final Context context, Cursor cursor) {
    // Find individual views that we want to modify in the list item layout
    TextView nameTextView = (TextView) view.findViewById(R.id.name);

    ImageButton image = (ImageButton) view.findViewById(R.id.account_menu);

    int nameColumnIndex =  cursor.getColumnIndex(accountContract.accountEntry.COLUMN_NAME);

    String name = cursor.getString(nameColumnIndex);

    nameTextView.setText(name);

    int position;
    position=cursor.getPosition();
    image.setTag(position);
}

}

【问题讨论】:

  • 你必须在你的 accountCursorAdapter 类中注册 clicklistener,把你的类放在问题中
  • 另外,我建议你给 RecyclerView 一个机会 :)

标签: android


【解决方案1】:

您可以在适配器中注册您的 onClickListener:

  @Override
    public void bindView(View view, final Context context, Cursor cursor) {
        // Find individual views that we want to modify in the list item layout
        TextView nameTextView = (TextView) view.findViewById(R.id.name);

    ImageButton image = (ImageButton) view.findViewById(R.id.account_menu);

    int nameColumnIndex =  
    cursor.getColumnIndex(accountContract.accountEntry.COLUMN_NAME);

    String name = cursor.getString(nameColumnIndex);

    nameTextView.setText(name);

    int position;
    position=cursor.getPosition();
    image.setTag(position);

    image.setOnClickListener(new OnClickListener() {
    public void onClick(View v)
      {
        //do something
      } 
    });
}

【讨论】:

  • 我必须在 Fragment 中设置 onClick,因为单击按钮时我正在显示一个菜单,用户可以执行各种需要 Fragment 和 sqlite 表特定信息的操作。
  • 有没有类似findViewById的方法来获取fragment中按钮的视图
  • 不,因为您的按钮在您的适配器中,您可以使用接口获取片段中的值
  • 好的。非常感谢。我会试试你的建议会让你知道的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-02
  • 1970-01-01
相关资源
最近更新 更多