Java 使列表可点击
我已经尝试过使用clickable和focusable,但似乎没有任何东西允许列表项可以点击 xml文件Java 使列表可点击,java,android,listview,onclicklistener,Java,Android,Listview,Onclicklistener,我已经尝试过使用clickable和focusable,但似乎没有任何东西允许列表项可以点击 xml文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:l
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/add_recipe_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/recipe_activity_add"
android:background="@color/colorPrimary"
android:textColor="#fff"/>
<ListView
android:id="@+id/recipe_list"
android:layout_width="match_parent"
android:focusable="false"
android:clickable="true"
android:layout_height="match_parent" />
java代码
recipeListView = (ListView)findViewById(R.id.recipe_list);
//make viewRecipe Work
recipeListView.setOnItemClickListener(new ListView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d("MainActivity", "ListView item clicked.");
}
});
recipeListView=(ListView)findViewById(R.id.recipe\u列表);
//使viewRecipe工作
recipeListView.setOnItemClickListener(新的ListView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
d(“MainActivity”,“ListView项已单击”);
}
});
当您在Listview行的子项上设置onClickListner时,尝试在Listview项上设置OnItemClickListner时,Android有时会显示一种奇怪的行为。试着检查你的“适配器”类,确保一切都很好,并且按照标准进行了良好的管理。使用ViewHolder访问适配器类中的子项。
下面是适配器的示例类。用这个,希望它能用
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import de.hdodenhof.circleimageview.CircleImageView;
/**
* Created by Zohaib Hassan on 11/28/2016.
*/
public class InboxAdapter extends ArrayAdapter<InboxRow> {
ArrayList<InboxRow> items;
Context context;
public InboxAdapter(Context context, int resource, ArrayList<InboxRow> items) {
super(context , resource , items);
this.context = context;
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Get the data item for this position
InboxRow rowItem = getItem(position);
// Check if an existing view is being reused, otherwise inflate the view
ViewHolder viewHolder; // view lookup cache stored in tag
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(R.layout.inbox_row, null);
viewHolder.tvUserName = (TextView) convertView.findViewById(R.id.tv_user_name_inbox);
viewHolder.tvMessage = (TextView) convertView.findViewById(R.id.tv_message_inbox);
viewHolder.tvTimeCount = (TextView) convertView.findViewById(R.id.tv_time_count_inbox);
viewHolder.userProfilePic = (CircleImageView) convertView.findViewById(R.id.inbox_profile_image);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
/*CircleImageView ivProfileImage Set Background with Picasso*/
return convertView;
}
private static class ViewHolder {
TextView tvUserName , tvMessage , tvTimeCount;
CircleImageView userProfilePic;
}
}
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.TextView;
导入java.util.ArrayList;
导入de.hdodenhof.circleimageview.circleimageview;
/**
*由Zohaib Hassan于2016年11月28日创建。
*/
公共类InboxAdapter扩展了ArrayAdapter{
数组列表项;
语境;
公共InboxAdapter(上下文、int资源、ArrayList项){
超级(上下文、资源、项目);
this.context=上下文;
这个项目=项目;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//获取此职位的数据项
InboxRow rowItem=getItem(位置);
//检查是否正在重用现有视图,否则会膨胀视图
ViewHolder ViewHolder;//存储在标记中的视图查找缓存
if(convertView==null){
viewHolder=新的viewHolder();
LayoutFlater充气机=LayoutFlater.from(上下文);
convertView=充气机。充气(R.layout.inbox\u行,空);
viewHolder.tvUserName=(TextView)convertView.findViewById(R.id.tv\u user\u name\u收件箱);
viewHolder.tvMessage=(TextView)convertView.findviewbyd(R.id.tv\u message\u收件箱);
viewHolder.tvTimeCount=(TextView)convertView.findViewById(R.id.tv\u time\u count\u收件箱);
viewHolder.userProfilePic=(CircleImageView)convertView.findViewById(R.id.inbox\u profile\u image);
convertView.setTag(viewHolder);
}否则{
viewHolder=(viewHolder)convertView.getTag();
}
/*CircleImageView IVProfile毕加索背景图像集*/
返回视图;
}
私有静态类视图持有者{
text查看tvUserName、tvMessage、tvTimeCount;
CircleImageView用户配置文件PIC;
}
}
最后一件事,请确保布局类中的“ListView”在高度和宽度方面都设置为“匹配父项”。默认情况下,列表项是可单击的。请参阅。@commonware它不适用于我链接到的示例项目。如果示例项目在您的测试环境中工作,那么您可以确定我的项目与您的项目有什么不同。如果示例项目在您的测试环境中不起作用,则测试环境存在一些问题。