0

こんにちは、私の名前はネイサンです。コードに問題があります。あなたの助けを求めたかったのです。あなたがそれを手伝ってくれたら、とても感謝しています。データベースによって設定されたリストビューがあります。私の目標は、リストビューでいくつかの項目を選択することでした。それらのリストビューの横には、「チェック」イメージが表示されます。しかし、私の問題は、以下に示すように、あるアイテムをクリックすると、別のアイテムにも「チェック」画像が表示されることです。それがあなたを助けることができるなら、これが私のコードです

package com.example.lamder;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class GetActivity extends Activity {
    RegistrationAdapter adapter_ob;
    RegistrationOpenHelper helper_ob;
    SQLiteDatabase db_ob;
    ListView nameList;
    Button registerBtn;
    Cursor cursor;
    static boolean[] check=new boolean[100];
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.getact);
        nameList = (ListView) findViewById(R.id.lv_name);
        registerBtn = (Button) findViewById(R.id.btn_register);
        adapter_ob = new RegistrationAdapter(this);
        cursor=adapter_ob.queryName();
        Context context = getApplicationContext();
        CharSequence text =getString(R.string.selectby);
        int duration = Toast.LENGTH_SHORT;

        Toast toast = Toast.makeText(context, text, duration);
        toast.show();
        for(int i=0;i<check.length;i++)
            check[i]=false;
        String[] from = { helper_ob.FNAME, helper_ob.LNAME };   

        int[] to = { R.id.tv_fname, R.id.tv_lname };
        cursor = adapter_ob.queryName();
        SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(this,
                R.layout.row, cursor, from, to);
        nameList.setAdapter(cursorAdapter);
        nameList.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {       
                ImageView img=(ImageView) view.findViewById(R.id.imageView2);
                if(check[position]==false)
                {
                    check[position]=true;
                    img.setVisibility(View.VISIBLE);
                }
                else
                {
                     check[position]=false;
                     img.setVisibility(View.INVISIBLE);   
                }


            }
        });

XML コード

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

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="75dp"
        android:background="@drawable/backnote" >

        <TextView
            android:id="@+id/tv_fname"
            android:layout_width="wrap_content"
            android:layout_height="30dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/imageView1"
            android:text="ans" />

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/tv_lname"
            android:layout_marginLeft="44dp"
            android:layout_toRightOf="@+id/tv_fname" >
        </RelativeLayout>

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:src="@drawable/blackbar" />

        <TextView
            android:id="@+id/tv_lname"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/tv_fname"
            android:text="ques" />

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/tv_lname" >

            <ImageView
                android:id="@+id/imageView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:scaleType="fitEnd"
                android:src="@drawable/checker"
                android:visibility="invisible" />
            --that's the picture i want to make visible when clicked
        </RelativeLayout>

    </RelativeLayout>

</LinearLayout>

あなたが私を助けてくれることを願っています、ありがとう、ネイサン

4

1 に答える 1

0

そのような例を試す必要があります: http://www.mysamplecode.com/2012/07/android-listview-checkbox-example.html

ここでの問題は、チェックされたアイテムがリストをスクロールするときに再利用されるため、各チェックボックスの実際の状態を含むリスト/配列がない場合、チェックされたままになります (ただし、他の名前のアイテムの場合)。

于 2013-08-09T10:31:05.903 に答える