各アイテムの横にチェックボックスがあるリストビューを作成しようとしています。さらに、アイテムをクリックすると、新しいアクティビティに移動します(チェックボックス付きの新しいリストに移動します)。問題は、アイテムの特定の領域に関係なく、各アイテムをクリックすると、ボックスがチェックされるということです。チェックボックスをクリックしたときにのみ、チェックボックスをオンにする必要があります。他の言葉では、チェックボックスをクリックしたときにのみ各項目をチェックしたいと思っています。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);
}
}
});
}}
問題をほとんど修正しました。新しいアクティビティを開始するように割り当てられているアイテムをクリックすると、チェックしなかった場合でもチェックボックスがオンになります。それは、私がそれをクリックしたときに新しい活動を始めることができないという不都合をほのめかした。 – j123
アイテムやチェックボックスとテキストビューを個別に完了するためにクリックしました –
問題は両方とも同じOnclicklistenerとadapterviewを使用していると思います。私はそれぞれのために別々の方法を見つけることができませんでした。 – j123