2017-05-07 83 views
-3

我已经尝试过使用可点击和可调焦但没有任何东西似乎允许列表项可点击。让列表可点击

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: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."); 
     } 
    }); 
+2

默认情况下,列表项可点击。请参阅[本示例应用程序](https://github.com/commonsguy/cw-omnibus/tree/master/Selection/List)。 – CommonsWare

+0

@CommonsWare它不适合我 –

+1

尝试我链接到的示例项目。如果示例项目在您的测试环境中运行,那么您可以确定与您的项目相比您的项目有什么不同。如果示例项目在测试环境中不起作用,那么测试环境存在一些问题。 – CommonsWare

回答

0

的Android有时会出现,当你试图setOnItemClickListner上ListView项,而你已经设置onClickListner在子一个怪异的行为Listview行的项目。试着检查你的“适配器”类,并确保一切都很好,并根据标准妥善管理。使用ViewHolder访问Adapter类中的子项。 以下是适配器的示例类。使用这个,希望它能工作。

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; 

} 

} 

最后一件事,请确保布局类中的“ListView”在高度和宽度上均设置为“match-parent”。