android-ListFragment每行带有按钮
作者:互联网
我有一个应用程序,几乎是这样的:
我尝试遵循此http://developer.android.com/guide/components/fragments.html(为活动创建事件回调),但似乎不起作用.我的意思是,我想选择每一行以查看详细信息,而且我希望能够单击我想要的任何行的按钮a,b或c.我不确定如何将按钮与其行关联.
这是我的rowLayout.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stretchColumns="0,1">
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left">
<ImageView
android:id="@+id/imageViewTypeClient"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"/>
</LinearLayout>
<LinearLayout
android:gravity="right"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageButton
android:id="@+id/imageButtonSync"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:src="@android:drawable/stat_notify_sync"/>
<ImageButton
android:id="@+id/imageButtonDelete"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:src="@android:drawable/ic_menu_delete"
tools:ignore="ContentDescription" />
<ImageButton
android:id="@+id/imageButtonEdit"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:src="@android:drawable/ic_menu_edit" />
</LinearLayout>
</TableRow>
</TableLayout>
我采用这种方式来获得所需的订单.
这是我的ListFragment:
public class AplicacionActivity extends FragmentActivity implements OnEmployeeSelectedListener {
public void onEmployeeSelected(int id) {
Log.e("activity aplicacion", "entre");
Bundle arguments = new Bundle();
arguments.putLong("id", id);
DataClientActivity fragment = new DataClientActivity();
fragment.setArguments(arguments);
getSupportFragmentManager().beginTransaction()
.replace(android.R.id.tabcontent,fragment, AplicacionActivity.tagFragmentDataClient)
.commit();
}
...
}
这是我的ListFragment:
public class ClientsActivity extends ListFragment {
OnEmployeeSelectedListener mEmployeeListener;
public interface OnEmployeeSelectedListener {
public void onEmployeeSelected(int id);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mEmployeeListener = (OnEmployeeSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " you must implement OnEmployeeSelectedListener");
}
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
int idEmployee = position;
// Send the event and Uri to the host activity
mEmployeeListener.onEmployeeSelected(idEmployee);
}
我只是尝试运行此命令,但是当我按列表的任何行时,不会调用onListItemClick.
尽管如此,我不知道是否必须对按钮进行类似的操作.
如果有人可以为我提供教程或为我提供正确的指导,我将非常感激.
解决方法:
对于选择行的问题,我成功了.我之前输入的代码没有错.经过大量研究,我发现这个How to fire onListItemClick in Listactivity with buttons in list?
对我有帮助的评论是这样的:
“还有一种更优雅的解决方案,尝试在列表元素的根布局中添加android:descendantFocusability =“ blocksDescendants”.这将使单击onListItem成为可能,并且您可以分别处理Button或ImageButton单击.”
我希望这可以对任何人有所帮助.
标签:android-listfragment,android 来源: https://codeday.me/bug/20191030/1971554.html