已单击的Android ListView项目不工作
我不明白出了什么问题,当单击列表中的某个项目时,没有任何附加内容。 我的环境是minsdk:21、maxsdk:27、java8(openjdk)、androidstudio 3.1.4、终端android6.0 注意:使用FragmentManager或SupportFragmentManager可提供相同的结果 片段列表布局已单击的Android ListView项目不工作,android,android-studio,listview,android-fragments,Android,Android Studio,Listview,Android Fragments,我不明白出了什么问题,当单击列表中的某个项目时,没有任何附加内容。 我的环境是minsdk:21、maxsdk:27、java8(openjdk)、androidstudio 3.1.4、终端android6.0 注意:使用FragmentManager或SupportFragmentManager可提供相同的结果 片段列表布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http:/
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:descendantFocusability="blocksDescendants"
>
<ListView
android:id="@+id/list"
android:dividerHeight="1sp"
android:divider="@color/blue_serenity_transparent"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:useDefaultMargins="true"
android:background="@color/blue_serenity_transparent"
android:columnCount="3"
android:rowCount="2"
>
<ImageView
android:id="@+id/notif_type"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_column="0"
android:layout_row="0"
android:layout_gravity="center_vertical"
/>
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_column="1"
android:layout_row="0"
android:textSize="18dp"
android:textColor="@color/black"
/>
<TextView
android:id="@+id/date"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_row="1"
android:layout_column="1"
/>
</GridLayout>
</LinearLayout>
列表行布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:descendantFocusability="blocksDescendants"
>
<ListView
android:id="@+id/list"
android:dividerHeight="1sp"
android:divider="@color/blue_serenity_transparent"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:useDefaultMargins="true"
android:background="@color/blue_serenity_transparent"
android:columnCount="3"
android:rowCount="2"
>
<ImageView
android:id="@+id/notif_type"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_column="0"
android:layout_row="0"
android:layout_gravity="center_vertical"
/>
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_column="1"
android:layout_row="0"
android:textSize="18dp"
android:textColor="@color/black"
/>
<TextView
android:id="@+id/date"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_row="1"
android:layout_column="1"
/>
</GridLayout>
</LinearLayout>
列表设置
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
List<NotificationBean> data = new NotificationBean().list(getActivity().getBaseContext());
View v = inflater.inflate(R.layout.fragment_notifications, container, false);
list = (ListView) v.findViewById(R.id.list);
listAdapter = new Adapter(getActivity().getBaseContext(), data);
list.setAdapter(listAdapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.e(TAG, "row clicked");
}
});
return v;
}
@覆盖
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
列表数据=新建NotificationBean().List(getActivity().getBaseContext());
视图v=充气机。充气(R.layout.fragment_通知,容器,错误);
list=(ListView)v.findViewById(R.id.list);
listAdapter=新适配器(getActivity().getBaseContext(),数据);
list.setAdapter(listAdapter);
list.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Log.e(标记“单击行”);
}
});
返回v;
}
列出适配器
class NotificationsAdapter extends BaseAdapter {
private Context context;
private LayoutInflater inflater = null;
private List<NotificationBean> notifications;
public NotificationsAdapter(Context context, List<NotificationBean> notifications){
this.context = context;
this.notifications = notifications;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return notifications.size();
}
@Override
public Object getItem(int position) {
return notifications.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null)
v = inflater.inflate(R.layout.fragment_notifications_row, null);
NotificationBean n = notifications.get(position);
GridLayout layout = (GridLayout) v.findViewById(R.id.row_layout);
if (dark) layout.setBackgroundColor(getResources().getColor(R.color.blue_serenity_transparent));
else layout.setBackgroundColor(getResources().getColor(R.color.white));
dark = !dark;
ImageView notifType = (ImageView) v.findViewById(R.id.notif_type);
notifType.setImageResource(n.getIcon());
TextView title = (TextView) v.findViewById(R.id.title);
title.setText(n.getTitle());
TextView date = (TextView) v.findViewById(R.id.date);
date.setText(Constants.DTF.format(n.getDate()));
return v;
}
}
class NotificationsAdapter扩展了BaseAdapter{
私人语境;
专用充气机=空;
私人名单通知;
公共通知适配器(上下文、列表通知){
this.context=上下文;
this.notifications=通知;
充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
}
@凌驾
public int getCount(){
返回通知。size();
}
@凌驾
公共对象getItem(int位置){
返回通知。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图v=转换视图;
如果(v==null)
v=充气机充气(R.layout.fragment\u notifications\u row,null);
NotificationBean n=notifications.get(位置);
GridLayout=(GridLayout)v.findViewById(R.id.row_布局);
if(暗)layout.setBackgroundColor(getResources().getColor(R.color.blue\u serenity\u transparent));
else layout.setBackgroundColor(getResources().getColor(R.color.white));
黑暗=!黑暗;
ImageView notifType=(ImageView)v.findViewById(R.id.notif_type);
setImageResource(n.getIcon());
TextView title=(TextView)v.findViewById(R.id.title);
title.setText(n.getTitle());
TextView日期=(TextView)v.findViewById(R.id.date);
date.setText(Constants.DTF.format(n.getDate());
返回v;
}
}
add this line in List row layout其父LinearLayout android:clickable=“false”Aniruddh可能重复,已在线性和网格布局上尝试了clickable+focusable:false。。它在另一个线程中找到的android:genderantfocusability=“blocksDescendants”解决方案中不起作用。但是谢谢你的回答