Android onListItemClick不工作?
我正在尝试使用自定义适配器设置一个侦听器。我按下按钮时,McClick没有开火 我发现我需要添加一些属性,但仍然不起作用Android onListItemClick不工作?,android,listview,android-arrayadapter,onitemclicklistener,Android,Listview,Android Arrayadapter,Onitemclicklistener,我正在尝试使用自定义适配器设置一个侦听器。我按下按钮时,McClick没有开火 我发现我需要添加一些属性,但仍然不起作用 android:focusableInTouchMode="false" android:clickable="false" android:focusable="false" 活动: public class StudentActivity { private Act
android:focusableInTouchMode="false"
android:clickable="false"
android:focusable="false"
活动:
public class StudentActivity {
private Activity mActivity;
private Student mStudent;
private TextView mName;
private Button mMonday;
private ListView mListView;
//That will be deleted
private ArrayList<HashMap<String, String>> list;
public StudentActivity(Activity activity, Student student) {
mActivity = activity;
mStudent = student;
mName = (TextView) mActivity.findViewById(R.id.name_student);
mName.setText(mStudent.getFirstName() + " " + mStudent.getLastName());
mListView = (ListView) mActivity.findViewById(R.id.list_view);
list = new ArrayList<>();
int numberOfIntervals = 7;
List<String> hours = new ArrayList<>();
hours.add("08:00-10:00");
hours.add("10:00-12:00");
hours.add("12:00-14:00");
hours.add("14:00-16:00");
hours.add("16:00-18:00");
hours.add("18:00-20:00");
hours.add("20:00-22:00");
for (int i = 0; i < numberOfIntervals; i++) {
HashMap<String, String> temp = new HashMap<>();
temp.put("First", hours.get(i));
temp.put("Second", "");
list.add(temp);
}
ListViewAdapter adapter = new ListViewAdapter(mActivity, list);
mListView.setAdapter(adapter);
addListenerForMondayButton(adapter);
addListenerForListViewItem(mListView);
}
private void addListenerForMondayButton(final ListViewAdapter adapter) {
mMonday = (Button) mActivity.findViewById(R.id.name_monday);
mMonday.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ReservationTask reservationTask = new ReservationTask();
reservationTask.populateList(adapter);
}
});
}
private void addListenerForListViewItem(ListView view) {
view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
addNotification();
}
});
}
private void addNotification() {
NotificationCompat.Builder builder =
new NotificationCompat.Builder(mActivity.getApplicationContext())
.setSmallIcon(R.drawable.arrow_back)
.setContentTitle("Notification")
.setContentText("This is a test notification");
Intent notificationIntent = new Intent(mActivity.getApplicationContext(), MainActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(mActivity.getApplicationContext(), 0,
notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(contentIntent);
NotificationManager manager = (NotificationManager) mActivity.getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(0, builder.build());
}
公共课堂学生活动{
私人活动能力;
私立学生;
私有文本视图mName;
私人按钮日;
私有列表视图;
//这将被删除
私有数组列表;
公共学生活动(活动,学生){
活动性=活动性;
mStudent=学生;
mName=(TextView)mActivity.findviewbyd(R.id.name\u student);
mName.setText(mStudent.getFirstName()+“”+mStudent.getLastName());
mListView=(ListView)mActivity.findViewById(R.id.list\u视图);
列表=新的ArrayList();
int numberofinterval=7;
列表小时数=新建ArrayList();
加上(“08:00-10:00”);
加上(“10:00-12:00”);
加上(“12:00-14:00”);
加上(14:00-16:00);
加上(16:00-18:00);
加上(“18:00-20:00”);
加上(“20:00-22:00”);
对于(int i=0;i
适配器:
public class ListViewAdapter extends BaseAdapter {
private ArrayList<HashMap<String, String>> mList;
private List<Reservation> mReservationList;
Activity mActivity;
TextView mHour;
TextView mName;
public ListViewAdapter(Activity activity, ArrayList<HashMap<String, String>> list) {
super();
mActivity = activity;
mList = list;
}
@Override
public int getCount() {
return mList.size();
}
@Override
public Object getItem(int position) {
return mList.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = mActivity.getLayoutInflater();
convertView=inflater.inflate(R.layout.list_view_item, null);
mHour = (TextView) convertView.findViewById(R.id.list_item_hour);
mName = (TextView) convertView.findViewById(R.id.list_item_name);
HashMap<String, String> map = mList.get(position);
mHour.setText(map.get("First"));
boolean set = false;
if (mReservationList != null && mReservationList.size() > 0) {
for (Reservation reservation: mReservationList) {
String createInterval = reservation.getStartHour() + "-" + reservation.getEndHour();
if (createInterval.equals(parseTime(mHour.getText().toString()))) {
mName.setText("Dima");
set = true;
}
}
if (set == false) {
mName.setText(map.get("Second"));
}
} else {
mName.setText(map.get("Second"));
}
return convertView;
}
public void populateNameReservation(List<Reservation> reservations) {
mReservationList = reservations;
notifyDataSetChanged();
}
private String parseTime(String intervalTime) {
String startHour = intervalTime.substring(0, intervalTime.indexOf("-"));
String endHour = intervalTime.substring(intervalTime.indexOf("-") + 1, intervalTime.length());
Time startHourTime = Time.valueOf(startHour + ":00");
Time endHourTime = Time.valueOf(endHour + ":00");
return startHourTime + "-" + endHourTime;
}
公共类ListViewAdapter扩展了BaseAdapter{
私有数组列表;
私有列表mReservationList;
活动能力;
文本视图mHour;
文本视图mName;
公共ListViewAdapter(活动,ArrayList列表){
超级();
活动性=活动性;
mList=列表;
}
@凌驾
public int getCount(){
返回mList.size();
}
@凌驾
公共对象getItem(int位置){
返回mList.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回0;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutInflater充气机=mActivity.getLayoutInflater();
convertView=充气机。充气(R.layout.list\u view\u项,空);
mHour=(TextView)convertView.findViewById(R.id.list\u item\u hour);
mName=(TextView)convertView.findViewById(R.id.list\u item\u name);
HashMap map=mList.get(位置);
mHour.setText(map.get(“First”);
布尔集=假;
if(mReservationList!=null&&mReservationList.size()>0){
对于(预订:mReservationList){
字符串createInterval=reservation.getStartHour()+“-”+reservation.getEndHour();
if(createInterval.equals(parseTime(mHour.getText().toString())){
mName.setText(“Dima”);
设置=真;
}
}
if(set==false){
mName.setText(map.get(“第二”);
}
}否则{
mName.setText(map.get(“第二”);
}
返回视图;
}
公共无效populateNameReservation(列出保留){
mReservationList=预订;
notifyDataSetChanged();
}
私有字符串解析时间(字符串间隔时间){
String startHour=intervalTime.substring(0,intervalTime.indexOf(“-”);
字符串endHour=intervalTime.substring(intervalTime.indexOf(“-”)+1,intervalTime.length());
Time startHourTime=Time.valueOf(startHour+“:00”);
Time endHourTime=Time.valueOf(endHour+“:00”);
返回startHourTime+“-”+endHourTime;
}
列表视图的XML布局:
<?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">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:text="Text View"
android:id="@+id/list_item_hour"
android:focusableInTouchMode="false"
android:clickable="false"
android:focusable="false"/>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:text="Text View"
android:id="@+id/list_item_name"
android:focusableInTouchMode="false"
android:clickable="false"
android:focusable="false"/>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
谢谢!!试试这个示例代码,我使用了一个带有自定义类的列表视图来在列表视图中膨胀数据,然后单击列表项,使用intent重定向到另一个活动 检查这是工作代码
protected void onPostExecute(Void result) {
super.onPostExecute(result);
CustomList customList = new CustomList(TrainingProgrammes.this, listProgrms, reference_IDs, programStatus, _tierLevel, _tierIndexValue, programIDS);
listView = (ListView) findViewById(R.id.listView);
listView.setAdapter(customList);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
if (programStatus.get(i).equals("Subscribed")) {
System.out.println("Program id is trianing programme new : " + programIDS.get(i) + " CLIENT_ID " + _clientID);
Intent nextScreen2 = new Intent(getApplicationContext(), TaskList.class);
nextScreen2.putExtra("EMAIL_ID", _loginID);
nextScreen2.putExtra("PROGRAMME_ID", programIDS.get(i));
nextScreen2.putExtra("CLIENT_ID", _clientID);
// nextScreen2.putExtra("PROGRAMME_STATUS", programStatus.get(i));
startActivity(nextScreen2);
}
}
});
}
受保护的void onPostExecute(void结果){
super.onPostExecute(结果);
自定义列表自定义列表=