Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.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
Java Can';t使用listview行中的按钮添加Onclick操作_Java_Android_Listview - Fatal编程技术网

Java Can';t使用listview行中的按钮添加Onclick操作

Java Can';t使用listview行中的按钮添加Onclick操作,java,android,listview,Java,Android,Listview,我是android开发的新手n funky。我开始学习,但被listview中的可点击按钮阻止了 `public class Test2 extends AppCompatActivity { private static final String TAG = "Test2"; Button btnEdytuj; DatabaseHelper myDb; SimpleCursorAdapter dataAdapter;` @Override protecte

我是android开发的新手n funky。我开始学习,但被listview中的可点击按钮阻止了

  `public class Test2 extends AppCompatActivity {
    private static final String TAG = "Test2";
    Button btnEdytuj;
    DatabaseHelper myDb;
    SimpleCursorAdapter dataAdapter;`

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test2);
    myDb = new DatabaseHelper(this);
    displayList();
}

private void displayList() {
    Cursor cursor = myDb.getAllData();
    String from[] = new String[]{myDb.COL_ID, myDb.COL_NAZWA, myDb.COL_LAT, myDb.COL_LON};
    int to[] = new int[]{R.id.textView10, R.id.textView1, R.id.textView2, R.id.textView3};
    dataAdapter = new SimpleCursorAdapter(this, R.layout.row_item_edit, cursor, from, to, 0);

    ListView lv = (ListView) findViewById(R.id.listViewId);
    lv.setAdapter(dataAdapter);
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            btnEdytuj = (Button) view.findViewById(R.id.buttonEE);
            btnEdytuj.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v){
                    // Do something
                    Intent intent = new Intent(Test2.this,Edytuj.class);
                    startActivity(intent);`
`公共类Test2扩展了AppCompative活动{
私有静态最终字符串TAG=“Test2”;
按钮btnEdytuj;
数据库助手myDb;
SimpleCursorAdapter数据适配器`
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test2);
myDb=新数据库助手(此);
显示列表();
}
私有void displayList(){
Cursor=myDb.getAllData();
字符串from[]=新字符串[]{myDb.COL_ID,myDb.COL_NAZWA,myDb.COL_LAT,myDb.COL_LON};
int to[]=新int[]{R.id.textView10,R.id.textView1,R.id.textView2,R.id.textView3};
dataAdapter=new SimpleCursorAdapter(此,R.layout.row\u item\u编辑,光标,从,到,0);
ListView lv=(ListView)findViewById(R.id.listViewId);
lv.setAdapter(数据适配器);
lv.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
btnEdytuj=(按钮)view.findViewById(R.id.buttonEE);
btnEdytuj.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//做点什么
Intent Intent=新Intent(Test2.this,Edytuj.class);
星触觉(意向)`
我的愿望是通过按一行或一个按钮并传递一个id来处理编辑,通过意图触发器从列表中打开新的活动

我发现了一个错误,也许解决它会有帮助:

android.support.v7.widget.ListViewCompat.lookForSelectablePosition(int,boolean)会错误地覆盖android.widget.ListView中的包私有方法

 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            //Write your code here
        }
    });
listView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
//在这里编写代码
}
});

希望这能有所帮助。

您必须将按钮
onClick
方法放在
Adapter
类中


正如您使用的
SimpleCursorAdapter
,请用作参考。

在您的列表适配器中执行以下操作:

此函数用于获取视图功能:

  @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            if (inflater == null)
                inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            if (convertView == null)
                convertView = inflater.inflate(R.layout.list_note, null);

          btnEdytuj = (Button) convertView.findViewById(R.id.buttonEE);
          btnEdytuj.setOnClickListener(new View.OnClickListener(){
             @Override
             public void onClick(View v){ 
             // Do something
               }
           });

      }

            return convertView;
        } 
另一个绑定视图:

@Override
    public void bindView(View view, Context context, Cursor cursor){
        int row_id = cursor.get('_id');  //Your row id (might need to replace)
        Button button = (Button) view.findViewById(R.id.buttonEE);
        button.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v){
                //ADD STUFF HERE you know which row is clicked. and which button
            }
        });
    }

请在活动类中编写以下代码

MainActivity.java

ArrayList<MobileData> searchResults = getMobileData();
final ListView lv1 = (ListView) findViewById(R.id.ListView01);
lv1.setAdapter(new MobileAdapter(this, searchResults));
public class MobileAdapter extends BaseAdapter {

private static ArrayList<MobileData> searchArrayList;

private LayoutInflater mInflater;
private Context context;
MobilezonDAO dao;

public MobileAdapter(Context context, ArrayList<MobileData> results) {
    this.context = context;
    searchArrayList = results;
    mInflater = LayoutInflater.from(context);
    dao = new MobilezonDAO(this.context);
}

public int getCount() {
    return searchArrayList.size();
}

public Object getItem(int position) {
    return searchArrayList.get(position);
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    final ViewHolder holder;
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.mobile_row_view, null);
        holder = new ViewHolder();

        holder.mobileImage = (ImageView) convertView.findViewById(R.id.mobileImage);
        holder.mobileName = (TextView) convertView.findViewById(R.id.mobileName);
        holder.mobilePrice = (TextView) convertView.findViewById(R.id.mobilePrice);
        holder.mobileBrand = (TextView) convertView.findViewById(R.id.mobileBrand);
        holder.viewDetails = (Button) convertView.findViewById(R.id.viewDetails);
        holder.addToCart = (Button) convertView.findViewById(R.id.addToCart);

        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }


    holder.mobileImage.setImageBitmap(searchArrayList.get(position).getMobileImage());
    holder.mobileName.setText(searchArrayList.get(position).getMobileName());
    holder.mobilePrice.setText("Price: $"+searchArrayList.get(position).getMobilePrice());
    holder.mobileBrand.setText("Brand: "+searchArrayList.get(position).getMobileBrand());
    holder.viewDetails.setBackgroundResource(R.drawable.view_details);
    holder.viewDetails.setId(position);
    holder.addToCart.setBackgroundResource(R.drawable.addtocart);

    holder.viewDetails.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            MobileData mobileData = searchArrayList.get(holder.viewDetails.getId());

            Intent intent= new Intent(context, MobileViewDetailsActivity.class);
            intent.putExtra("ModelNumber", mobileData.getModelNumber());

            context.startActivity(intent);
        }
    });

    holder.addToCart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            MobileData mobileData = searchArrayList.get(holder.viewDetails.getId());

            CartData cartData = new CartData();
            cartData.setUsername(emailid);
            cartData.setModelNumber(mobileData.getModelNumber());
            cartData.setPrice(mobileData.getMobilePrice());
            cartData.setQuantity("1");

            CartData tempCartData = dao.searchParticularCartData(cartData.getUsername(), cartData.getModelNumber());

            if(tempCartData!=null && tempCartData.getQuantity()!=null && Integer.valueOf(tempCartData.getQuantity())>0){
                Snackbar.make(view, "Selected Mobile already added in your cart.", Snackbar.LENGTH_LONG).setAction("Action", null).show();
            }else{
                dao.insertCartData(cartData);
                Snackbar.make(view, "Mobile has been successfully added in your cart.", Snackbar.LENGTH_LONG).setAction("Action", null).show();
            }
        }
    });

    return convertView;
}

static class ViewHolder {
    ImageView mobileImage;
    TextView mobileName;
    TextView mobilePrice;
    TextView mobileBrand;
    Button viewDetails;
    Button addToCart;
}
ArrayList searchResults=getMobileData();
最终ListView lv1=(ListView)findViewById(R.id.ListView01);
lv1.setAdapter(新的MobileAdapter(这是searchResults));
使用adapter类添加所有列表项,并在adapter类中添加按钮事件

MobileAdapter.java

ArrayList<MobileData> searchResults = getMobileData();
final ListView lv1 = (ListView) findViewById(R.id.ListView01);
lv1.setAdapter(new MobileAdapter(this, searchResults));
public class MobileAdapter extends BaseAdapter {

private static ArrayList<MobileData> searchArrayList;

private LayoutInflater mInflater;
private Context context;
MobilezonDAO dao;

public MobileAdapter(Context context, ArrayList<MobileData> results) {
    this.context = context;
    searchArrayList = results;
    mInflater = LayoutInflater.from(context);
    dao = new MobilezonDAO(this.context);
}

public int getCount() {
    return searchArrayList.size();
}

public Object getItem(int position) {
    return searchArrayList.get(position);
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    final ViewHolder holder;
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.mobile_row_view, null);
        holder = new ViewHolder();

        holder.mobileImage = (ImageView) convertView.findViewById(R.id.mobileImage);
        holder.mobileName = (TextView) convertView.findViewById(R.id.mobileName);
        holder.mobilePrice = (TextView) convertView.findViewById(R.id.mobilePrice);
        holder.mobileBrand = (TextView) convertView.findViewById(R.id.mobileBrand);
        holder.viewDetails = (Button) convertView.findViewById(R.id.viewDetails);
        holder.addToCart = (Button) convertView.findViewById(R.id.addToCart);

        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }


    holder.mobileImage.setImageBitmap(searchArrayList.get(position).getMobileImage());
    holder.mobileName.setText(searchArrayList.get(position).getMobileName());
    holder.mobilePrice.setText("Price: $"+searchArrayList.get(position).getMobilePrice());
    holder.mobileBrand.setText("Brand: "+searchArrayList.get(position).getMobileBrand());
    holder.viewDetails.setBackgroundResource(R.drawable.view_details);
    holder.viewDetails.setId(position);
    holder.addToCart.setBackgroundResource(R.drawable.addtocart);

    holder.viewDetails.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            MobileData mobileData = searchArrayList.get(holder.viewDetails.getId());

            Intent intent= new Intent(context, MobileViewDetailsActivity.class);
            intent.putExtra("ModelNumber", mobileData.getModelNumber());

            context.startActivity(intent);
        }
    });

    holder.addToCart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            MobileData mobileData = searchArrayList.get(holder.viewDetails.getId());

            CartData cartData = new CartData();
            cartData.setUsername(emailid);
            cartData.setModelNumber(mobileData.getModelNumber());
            cartData.setPrice(mobileData.getMobilePrice());
            cartData.setQuantity("1");

            CartData tempCartData = dao.searchParticularCartData(cartData.getUsername(), cartData.getModelNumber());

            if(tempCartData!=null && tempCartData.getQuantity()!=null && Integer.valueOf(tempCartData.getQuantity())>0){
                Snackbar.make(view, "Selected Mobile already added in your cart.", Snackbar.LENGTH_LONG).setAction("Action", null).show();
            }else{
                dao.insertCartData(cartData);
                Snackbar.make(view, "Mobile has been successfully added in your cart.", Snackbar.LENGTH_LONG).setAction("Action", null).show();
            }
        }
    });

    return convertView;
}

static class ViewHolder {
    ImageView mobileImage;
    TextView mobileName;
    TextView mobilePrice;
    TextView mobileBrand;
    Button viewDetails;
    Button addToCart;
}
公共类MobileAdapter扩展BaseAdapter{
私有静态ArrayList searchArrayList;
私人停车场;
私人语境;
莫比尔宗道;
公共MobileAdapter(上下文、ArrayList结果){
this.context=上下文;
searchArrayList=结果;
mInflater=LayoutInflater.from(上下文);
dao=新的MobilezonDAO(this.context);
}
public int getCount(){
返回searchArrayList.size();
}
公共对象getItem(int位置){
返回searchArrayList.get(位置);
}
公共长getItemId(int位置){
返回位置;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
最终持票人;
if(convertView==null){
convertView=mInflater.充气(R.layout.mobile\u row\u视图,空);
holder=新的ViewHolder();
holder.mobileImage=(ImageView)convertView.findViewById(R.id.mobileImage);
holder.mobileName=(TextView)convertView.findViewById(R.id.mobileName);
holder.mobilePrice=(TextView)convertView.findViewById(R.id.mobilePrice);
holder.mobileBrand=(TextView)convertView.findViewById(R.id.mobileBrand);
holder.viewDetails=(按钮)convertView.findViewById(R.id.viewDetails);
holder.addToCart=(按钮)convertView.findViewById(R.id.addToCart);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
holder.mobileImage.setImageBitmap(searchArrayList.get(position.getMobileImage());
holder.mobileName.setText(searchArrayList.get(position.getMobileName());
holder.mobilePrice.setText(“价格:$”+searchArrayList.get(位置).getMobilePrice());
holder.mobileBrand.setText(“品牌:+searchArrayList.get(position.getMobileBrand());
holder.viewDetails.setBackgroundResource(R.drawable.view\u详细信息);
holder.viewDetails.setId(位置);
持有者.附加部分.挫折背景资源(R.可提取.附加部分);
holder.viewDetails.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
MobileData MobileData=searchArrayList.get(holder.viewDetails.getId());
意向意向=新意向(上下文,MobileViewDetailsActivity.class);
intent.putExtra(“ModelNumber”,mobileData.getModelNumber());
背景。开始触觉(意图);
}
});
holder.addToCart.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
MobileData MobileData=searchArrayList.get(holder.viewDetails.getId());
CartData CartData=新的CartData();
cartData.setUsername(emailid);
setModelNumber(mobileData.getModelNumber());
setPrice(mobileData.getMobilePrice());
cartData.setQuantity(“1”);
CartData tempCartData=dao.SearchSpecificularCartData(CartData.getUsername(),CartData.getModelNumber());
if(tempCartData!=null&&tempCartData.getQuantity()!=null&&Integer.valueOf(tempCartData.getQ