0

配列データ リストと削除ボタンを表示するスピナーがあります。私がやろうとしているのは、削除ボタンをクリックすると、選択したスピナー値が自動的に削除されることですが、これを行う方法がわかりません。

削除ボタンのクリック機能で、アクティビティを再度デバッグした後、選択したスピナー値を削除しましたが、削除ボタンをクリックすると、選択したスピナー値を自動的に削除したいです。

package quesansw.the1;

import java.util.ArrayList;
import android.app.Activity;
import android.app.Dialog;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.NetworkInfo.State;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.AdapterView.OnItemSelectedListener;

public class View1 extends Activity { 
    SQLiteDatabase db;
    ArrayAdapter adapter; 
    private String array_spinner[];

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        db = openOrCreateDatabase("mydatabase.db",
                SQLiteDatabase.CREATE_IF_NECESSARY, null);

        final Dialog d1 = new Dialog(this);
        Window window = d1.getWindow();
        window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
                WindowManager.LayoutParams.FLAG_BLUR_BEHIND);

        //d1.setTitle("Login");

        d1.setContentView(R.layout.view);
        d1.show();
        Button Click = (Button) d1.findViewById(R.id.Click);
        Button Save = (Button) d1.findViewById(R.id.Save);
        Button Delete = (Button) d1.findViewById(R.id.Delete);

        ArrayList<String> list = new ArrayList<String>();
        Cursor cursor = db.rawQuery("select * from records", null);
        list.add("");
        if (cursor.moveToFirst())
        {
            do
            {
                list.add(cursor.getString(0));
            }
            while (cursor.moveToNext());
        }

        /*array_spinner=new String[20];
        array_spinner[0]=list.get(0);*/
        Spinner s = (Spinner) d1.findViewById(R.id.tittle_spinner);
        adapter = new ArrayAdapter<Object>(this,android.R.layout.simple_spinner_item, list.toArray());

        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        s.setAdapter(adapter);


        /*Save.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                Spinner s = (Spinner) d1.findViewById(R.id.tittle_spinner);
                String str = s.getSelectedItem().toString();
                System.out.println("********"+str);
                Cursor cur1=db.rawQuery("select * from records where tittle='"+str+"' ",null);
                cur1.moveToNext();
                String str1=cur1.getString(1);

                EditText ans = (EditText) d1.findViewById(R.id.text);
                ans.setText(str1);

            }
            });*/

        Delete.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                Spinner s = (Spinner) d1.findViewById(R.id.tittle_spinner);
                String str = s.getSelectedItem().toString();
                db.execSQL("delete from records where tittle='"+str+"' ");

            }
            });


        Click.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                Spinner s = (Spinner) d1.findViewById(R.id.tittle_spinner);
                String str = s.getSelectedItem().toString();
                System.out.println("********"+str);
                Cursor cur1=db.rawQuery("select * from records where tittle='"+str+"' ",null);
                cur1.moveToNext();
                String str1=cur1.getString(1);

                EditText ans = (EditText) d1.findViewById(R.id.text);
                ans.setText(str1);


            }
            });
    }
}

1) これが私のアクティビティのスクリーンショットです

アクティビティのスクリーンショット

2) スピナー値を含む別のスクリーン ショット:

スピナー値

4

3 に答える 3

0

deleteButton の onClickListener で、選択したスピナー値を配列データ リストから削除し、削除後に新しい配列リストで onnotifydatasetChanges または setSpinner アダプターを再度呼び出します。

public class MainActivity extends Activity {

Spinner spin;
Button delete;

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

    delete  = (Button) findViewById(R.id.button1);
    spin = (Spinner) findViewById(R.id.spinner1);

    final ArrayList<String> spinneritems = new ArrayList<String>();

    spinneritems.add("item 1");
    spinneritems.add("item 2");
    spinneritems.add("item 3");
    spinneritems.add("item 4");
    spinneritems.add("item 5");


    final ArrayAdapter<String> adp = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,spinneritems );
    adp.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spin.setAdapter(adp);

    delete.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            String selectedSpinner = spin.getSelectedItem().toString();
            spinneritems.remove(selectedSpinner);
            adp.notifyDataSetChanged();
        }
    });
}
}
}
于 2013-03-28T13:03:57.077 に答える
0

なぜSpinner何度も宣言して初期化するのですか? 一度やってみろ

public class View1 extends Activity { 
    SQLiteDatabase db;
    ArrayAdapter adapter; 
    private String array_spinner[];
    Spinner spinner;               // Declare your spinner here

次にonCreate()

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        db = openOrCreateDatabase("mydatabase.db",
            SQLiteDatabase.CREATE_IF_NECESSARY, null);
        spinner = (Spinner) d1.findViewById(R.id.tittle_spinner);  //initialize your spinner here

        final Dialog d1 = new Dialog(this);

delete button次に、呼び出しをクリックしてスピナーadapter.notifyDataSetChanged()を更新するとArray

于 2013-03-28T13:05:17.727 に答える
0

削除ボタンをクリックすると、リスナーが次のコードを追加します

Spinner s = (Spinner) d1.findViewById(R.id.tittle_spinner);
String str = s.getSelectedItem().toString();
adapter.remove(str);
adapter.notifyDataSetChanged();
s.setSelection(0);
于 2013-03-28T13:21:27.657 に答える