2017-04-18 22 views
-3

チェックボックスの代わりにテキストビューを使用すると、完全に機能します。しかしチェックボックスでは、それは動作しません。ここで何が間違っていますか?カスタムリスト内のチェックボックスが機能しない

すべてのチェックボックスでMenuitemを更新したいとします。

どのように私はこれを動作させることができますか? これはカスタム作成のlistviewなので、xmlファイルにlistviewがありません。私はxmlファイル内にtextviewとcheckboxしか持っていません。

package com.example.chaps.pizzaorder; 
import android.content.Intent; 
import android.content.res.TypedArray; 
import android.graphics.Paint; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.ListFragment; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.CheckBox; 
import android.widget.CompoundButton; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 
import android.widget.TextView; 
import android.widget.Toast; 

import java.util.ArrayList; 
import java.util.HashMap; 

/** 
* Created by chaps on 17/04/2017. 
*/ 

public class veggies extends ListFragment { 

    ArrayList<HashMap<String, String>> data=new ArrayList<HashMap<String,String>>(); 
    SimpleAdapter adapter; 
    String st; 
    double value; 
    double new_value; 
    //TextView txt; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setHasOptionsMenu(true); 


    } 



    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 

     String[] menuItem= getResources().getStringArray(R.array.veggie_topping); 



     String[] menuPrice=getResources().getStringArray(R.array.topping_price_veggie); 




     HashMap<String, String> map=new HashMap<String, String>();//custom adapter for image and text in list View 

     for(int i=0;i<menuItem.length;i++) 
     { 
      map=new HashMap<String, String>(); 
      map.put("Pizza",menuItem[i]); 
      map.put("Price",menuPrice[i]); 
      data.add(map); 
     } 
     String[] from={"Pizza","Price"}; 
     int[] to={R.id.textView5,R.id.checkBox}; 
     adapter=new SimpleAdapter(getActivity(),data,R.layout.veggies,from,to); 
     setListAdapter(adapter); 



     return super.onCreateView(inflater,container,savedInstanceState); 

    } 

    public void onStart() { 

     super.onStart(); 
     getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
/* 
    orders fragment = new orders(); 
    Bundle bundle = new Bundle(); 
    bundle.putString(String.valueOf(R.string.MD01), data.get(position).get("Pizza")); 
    fragment.setArguments(bundle); 
    getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.main_content,fragment).commit(); 

*/ 
       // st=data.get(position).get("Price"); 
       st=data.get(position).get("Price").substring(1); 
       value=Double.parseDouble(st); 
       new_value=new_value+value; 

Toast.makeText(getContext(),st,Toast.LENGTH_SHORT).show(); 




      } 
     }); 



    } 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     super.onCreateOptionsMenu(menu, inflater); 
     inflater.inflate(R.menu.menu_pizza_details, menu); 
    } 

    public void onPrepareOptionsMenu(Menu menu) { 

     MenuItem green = menu.findItem(R.id.actnprice); 
     if(green.getTitle() != String.valueOf(R.string.actnShow)){ 
      // If green menu item title not updated then update/change it 
      green.setTitle("€"+new_value); 
      //Toast.makeText(getContext(),"Green MenuItem Edited",Toast.LENGTH_SHORT).show(); 
     } 
     super.onPrepareOptionsMenu(menu); 
     getActivity().supportInvalidateOptionsMenu(); 
    } 

} 
+0

何が問題なのですか? TextViewとCheckBoxは異なっています...詳細を記入してください... – Opiatefuchs

+1

http://stackoverflow.com/questions/9900913/onitemclicklistener-was-not-work-with-the-checkbox、http://stackoverflow.com/questions/2367936/listview-onitemclicklistener-not-responding –

答えて

0

それはクリックを取っていません - あなたは、リストで使用している他のウィジェットにfalsefocusableを設定する必要があります。

完全なコードがないとわかりにくいです。

関連する問題