Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在自定义适配器上实现onClickListener?_Android_Xml_Listview_Android Listview - Fatal编程技术网

Android 如何在自定义适配器上实现onClickListener?

Android 如何在自定义适配器上实现onClickListener?,android,xml,listview,android-listview,Android,Xml,Listview,Android Listview,我正在学习制作一个简单的时间表管理应用程序。 我有一个课程列表。列表中的每个项目都是一个文本视图+一个删除按钮。我的列表项中的onClick侦听器未按预期工作。当我点击删除按钮时,它工作正常。但是,我想在用户单击列表项的textview时打开一些其他活动 代码: java(显示类列表的主要活动) package com.example.android.mytimeline; 导入android.content.Intent; 导入android.os.Bundle; 导入android.supp

我正在学习制作一个简单的时间表管理应用程序。 我有一个课程列表。列表中的每个项目都是一个文本视图+一个删除按钮。我的列表项中的onClick侦听器未按预期工作。当我点击删除按钮时,它工作正常。但是,我想在用户单击列表项的textview时打开一些其他活动

代码:

java(显示类列表的主要活动)

package com.example.android.mytimeline;
导入android.content.Intent;
导入android.os.Bundle;
导入android.support.v7.app.ActionBarActivity;
导入android.util.Log;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
导入android.widget.TextView;
导入java.util.ArrayList;
公共类ShowAll扩展了ActionBarActivity{
专用阵列适配器;
arraylistclassesdetail;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u show\u all);
这个.bindAdapter();
ListView ListView=(ListView)this.findViewById(R.id.class_列表);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
Log.v(“项目”,“点击”);
Intent Intent=new Intent(view.getContext(),ShowAllClicked.class);
ClassDetail ClassDetail=classesDetail.get(i);
Bundle=新Bundle();
bundle.putString(“CLASS\u NAME”,classDetail.CLASS\u NAME);
bundle.putString(“BUILDING”,classDetail.BUILDING);
bundle.putString(“周一开始”,classDetail.周一开始);
bundle.putString(“星期一结束”,classDetail.MONDAY结束);
bundle.putString(“周二开始”,classDetail.周二开始);
bundle.putString(“周二结束”,classDetail.周二结束);
bundle.putString(“星期三开始”,classDetail.星期三开始);
bundle.putString(“周三结束”,classDetail.周三结束);
bundle.putString(“星期四开始”,classDetail.星期四开始);
bundle.putString(“周四结束”,classDetail.周四结束);
bundle.putString(“FRIDAY\u START”,classDetail.FRIDAY\u START);
bundle.putString(“FRIDAY\u END”,classDetail.FRIDAY\u END);
意向。额外支出(捆绑);
星触觉(意向);
}
});
}
void bindapter(){
DBHelper db=新的DBHelper(this);
classesDetail=db.getClassesDetail();
ArrayList类=新的ArrayList();
对于(int i=0;i
activity_show_all.xml(ShowAll.java的xml布局)


CustomArrayAdapter.java(自定义阵列适配器文件)

package com.example.android.mytimeline;
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.BaseAdapter;
导入android.widget.Button;
导入android.widget.ListAdapter;
导入android.widget.TextView;
导入java.util.ArrayList;
/**
*由Aman Goel于2015年8月2日创建。
*/
公共类CustomArrayAdapter扩展BaseAdapter实现ListAdapter{
private ArrayList list=new ArrayList();
私人语境;
公共CustomArrayAdapter(ArrayList列表,上下文){
this.list=列表;
this.context=上下文;
}
@凌驾
public int getCount(){
返回list.size();
}
@凌驾
公共对象getItem(int-pos){
返回列表。获取(pos);
}
@凌驾
公共长getItemId(int-pos){
返回0;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
视图=转换视图;
如果(视图==null){
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
视图=充气机。充气(R.layout.list_项,空);
}
((TextView)view.findviewbyd(R.id.list_项)).setText(list.get(position));
Button deleteBtn=(Button)view.findviewbyd(R.id.delete);
deleteBtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
DBHelper db=新的DBHelper(上下文);
db.deleteClass(list.get(position));
列表。删除(位置);
notifyDataSetChanged();
}
});
返回视图;
}
}
list_item.xml(每个列表视图的布局)


package com.example.android.mytimetable;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

import java.util.ArrayList;


public class ShowAll extends ActionBarActivity {
    private ArrayAdapter<String> adapter ;
    ArrayList <ClassDetail> classesDetail ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show_all);
        this.bindAdapter();

        ListView listView = (ListView) this.findViewById(R.id.class_list);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Log.v("Item", "clicked");
                Intent intent = new Intent(view.getContext(), ShowAllClicked.class);
                ClassDetail classDetail = classesDetail.get(i);
                Bundle bundle = new Bundle();
                bundle.putString("CLASS_NAME", classDetail.class_name);
                bundle.putString("BUILDING", classDetail.building);
                bundle.putString("MONDAY_START", classDetail.monday_start);
                bundle.putString("MONDAY_END", classDetail.monday_end);
                bundle.putString("TUESDAY_START", classDetail.tuesday_start);
                bundle.putString("TUESDAY_END", classDetail.tuesday_end);
                bundle.putString("WEDNESDAY_START", classDetail.wednesday_start);
                bundle.putString("WEDNESDAY_END", classDetail.wednesday_end);
                bundle.putString("THURSDAY_START", classDetail.thursday_start);
                bundle.putString("THURSDAY_END", classDetail.thursday_end);
                bundle.putString("FRIDAY_START", classDetail.friday_start);
                bundle.putString("FRIDAY_END", classDetail.friday_end);
                intent.putExtras(bundle);
                startActivity(intent);
            }
        });
    }

    void bindAdapter() {
        DBHelper db = new DBHelper(this);
        classesDetail = db.getClassesDetail();
        ArrayList <String> classes = new ArrayList<>();
        for(int i = 0 ; i < classesDetail.size() ; i++) {
            Log.v("Adding ", classesDetail.get(i).class_name);
            classes.add(classesDetail.get(i).class_name);
        }
        if(classes.size() == 0)
            ((TextView) this.findViewById(R.id.holiday)).setText(getString(R.string.noClass));
        CustomArrayAdapter customArrayAdapter = new CustomArrayAdapter(classes, this);
        ((ListView) this.findViewById(R.id.class_list)).setAdapter(customArrayAdapter);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_show_all, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.

        return super.onOptionsItemSelected(item);
    }
}
<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="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.example.android.mytimetable.ShowAll"
    android:orientation="vertical">

    <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/class_list"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/holiday"/>

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:orientation="horizontal">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:minHeight="?android:attr/listPreferredItemHeight"
        android:gravity="center_vertical"
        android:id="@+id/list_item"
        android:focusableInTouchMode="false"
        android:clickable="false"
        android:focusable="false"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/delete"
        android:id="@+id/delete"/>

</LinearLayout>
TextView lst_tv=(TextView)view.findViewById(R.id.list_item);
lst_tv.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

    }
});