2017-10-26 2 views
0

各アイテムの横にチェックボックスがあるリストビューを作成しようとしています。さらに、アイテムをクリックすると、新しいアクティビティに移動します(チェックボックス付きの新しいリストに移動します)。問題は、アイテムの特定の領域に関係なく、各アイテムをクリックすると、ボックスがチェックされるということです。チェックボックスをクリックしたときにのみ、チェックボックスをオンにする必要があります。他の言葉では、チェックボックスをクリックしたときにのみ各項目をチェックしたいと思っています。Listviewにアイテム用の2つのOnclicksを追加する(新しいアクティビティを追加するチェックボックス、両方とも別々です)

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 

<ListView 
    android:id="@+id/fruitselector" 
    android:layout_width="match_parent" 
    android:layout_height="250dp" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentBottom="true" /> 

checkboxlayout.xml:

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/checkbox" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:gravity="center_vertical" 
android:checkMark="?android:attr/listChoiceIndicatorMultiple" 
android:padding="20sp" 
    /> 

MainActivity:チェックボックスに動作しますが、新しいにOnclick acvivity用ません。 (Main2とMain3の活動は新しい活動です)。

package com.example.jesse.languageswitcher; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
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 MainActivity extends AppCompatActivity { 

    ArrayList<String> selectedItems; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 



     selectedItems=new ArrayList<String>(); 


    } 


    public void onStart(){ 
     super.onStart(); 
     ListView chl=(ListView) findViewById(R.id.fruitselector); 
     chl.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
     String[] items={"Apple","Pear","Peach","watermelon","Orange","Grape"}; 
     ArrayAdapter<String> aa=new ArrayAdapter<String>(this,R.layout.checkboxlayout,R.id.checkbox,items); 
     chl.setAdapter(aa); 
     chl.setOnItemClickListener(new AdapterView.OnItemClickListener(){ 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       String selectedItem = ((TextView) view).getText().toString(); 
       if(selectedItems.contains(selectedItem)) 
        selectedItems.remove(selectedItem); 
       else 
        selectedItems.add(selectedItem); 

       if (position == 0) { 
        Intent myintent = new Intent(view.getContext(), Main2Activity.class); 
        startActivityForResult(myintent, 0); 
       } 
       if (position == 1) { 
        Intent myintent = new Intent(view.getContext(), Main3Activity.class); 
        startActivityForResult(myintent, 1); 
       } 
      } 

      }); 
    } 
     } 

これは私の古いコードで、新しいアクティビティの開始が機能しました。あなたがCheckedTextViewを使用しているので何のcheckboxlayout.xml

public class MainActivity extends AppCompatActivity { 

    String items[] = new String[]{ 
"Apple", "Orange", "Pear" 
}; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Intent myintent = getIntent(); 
     String value = myintent.getStringExtra("myintent"); 
     TextView textview = (TextView)findViewById(R.id.textView2); 
     textview.setText(value); 



     ListView listView = (ListView) findViewById(fruitselector); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items); 
     listView.setAdapter(adapter); 
     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

////This is the code that starts a new activity if I click on certain items. 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

       if (position==0){ 
       Intent myintent = new Intent(view.getContext(), Main2Activity.class); 
       startActivityForResult(myintent, 0); 
      } 
       if (position==1){ 
        Intent myintent = new Intent(view.getContext(), Main3Activity.class); 
        startActivityForResult(myintent, 1); 
       } 

      } 
      }); 
}} 

答えて

0

がない以外xmlファイルが同じで、あなたがチェックボックスが含まれているアイテムを作成することができますが、項目の行動からチェックボックスの動作が異なるたいthis.Ifのように動作され、テキストビュー

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <CheckBox 
     android:id="@+id/check_box" 
     android:layout_alignParentStart="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <TextView 
     android:id="@+id/check_box_text" 
     android:layout_toRightOf="@+id/check_box" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</RelativeLayout> 
+0

問題をほとんど修正しました。新しいアクティビティを開始するように割り当てられているアイテムをクリックすると、チェックしなかった場合でもチェックボックスがオンになります。それは、私がそれをクリックしたときに新しい活動を始めることができないという不都合をほのめかした。 – j123

+0

アイテムやチェックボックスとテキストビューを個別に完了するためにクリックしました –

+0

問題は両方とも同じOnclicklistenerとadapterviewを使用していると思います。私はそれぞれのために別々の方法を見つけることができませんでした。 – j123

関連する問題