如何在Android中获取值的所有复选框选中的表格形式自定义列表视图的所有textview

时间:2018-11-19 11:00:11

标签: android android-listview fragment simplecursoradapter

我有一个片段名称selectattributefragment.java,其中我有一个自定义列表视图,每行包括两个四个textview和一个复选框,使用简单的自定义适配器从sqlite数据库中获取textview数据,现在我想获取的值所选复选框的textview显示在按钮单击事件上

1.    selectattributefragment.java

public class ObservationselectattributeFragment extends Fragment {

    DatabaseHandler mDBHandler;
    ListView mListView;
    SimpleCursorAdapter mSCA;
    Cursor mCsr;
    ArrayList<String> attributeItems = new ArrayList<>();
    SparseBooleanArray sparseBooleanArray ;

    public ObservationselectattributeFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view=inflater.inflate(R.layout.fragment_observationselectattribute, container, false);
        mListView = (ListView)view.findViewById(R.id.lv001);
        mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        Button addattribute = (Button)view.findViewById(R.id.addattribute);
        addattribute.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String items="";
                Integer tcount=0;
                for(String item:attributeItems){
                   items+="-"+item+"\n";
                    tcount++;
                }
                Toast.makeText(getActivity(),"you have selected \n"+items,Toast.LENGTH_LONG).show();
                Toast.makeText(getActivity(),"you have selected \n"+tcount,Toast.LENGTH_LONG).show();
               FragmentTransaction fr= getFragmentManager().beginTransaction();
                fr.replace(R.id.main_container, new ShowObservationDataRecordingFragment()).addToBackStack("ObservationselectattributeFragment");
                fr.commit();
            }
        });
        mDBHandler = new DatabaseHandler(this.getActivity());
        mCsr = mDBHandler.getAllRecords();
        // Prepare a list of the columns to get the data from, for the ListViewt
        String[] columns_to_get_data_from = new String[]{
                DatabaseHandler.KEY_IDS,
                DatabaseHandler.KEY_NAMES,
                DatabaseHandler.KEY_FNAME,
                DatabaseHandler.KEY_MONAME
        };

        // Prepare a list of the Views into which to place the data
        int[] itemviews_to_place_data_in = new int[]{
                R.id.euserid,
                R.id.eusername,
                R.id.efname,
                R.id.emoname
        };

        // get and instance of SimpleCursorAdapter
        mSCA = new SimpleCursorAdapter(this.getActivity(),
                R.layout.listviewitem_record,
                mCsr,
                columns_to_get_data_from,
                itemviews_to_place_data_in,
                0);
        // get and instance of SimpleCursorAdapter the listviewitem_record layout
        mListView.setAdapter(mSCA);
        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String attributeItem = ((TextView)view).getText().toString();
                if(attributeItems.contains(attributeItem)){
                    attributeItems.remove(attributeItem);//uncheck item
                }
                else
                {
                    attributeItems.add(attributeItem);
                }


            }
        });

        ((HomeActivity) getActivity())
                .setActionBarTitle("Select Attribute");
        return view;
    }

}

2.    selectattributefragment.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.akmu_11.aicrpreporter.ObservationselectattributeFragment">

    <ListView
        android:id="@+id/lv001"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
    </ListView>
    <Button
        android:id="@+id/addattribute"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:layout_marginTop="20dp"
        android:background="@color/colorPrimary"
        android:text="Add Attribute"
        android:textAllCaps="false"
        android:textColor="@color/backgroundcolor"
        android:textSize="22dp" />


</LinearLayout>

3.    DatabaseHandler.java


public class DatabaseHandler extends SQLiteOpenHelper {
    // Database Version
    private static final int DATABASE_VERSION = 1;

    // Database Name
    public static final String DATABASE_NAME = "aicrpmain";

    // Labels table name
    public static final String TABLE_LABELS = "labels";
    public static final String TABLE_RECORDS = "Records";
    // Labels Table Columns names
    public static final String KEY_ID = "id";
    public static final String KEY_NAME = "name";
    public static final String KEY_IDS = "_id";
    public static final String KEY_NAMES = "names";
    public static final String KEY_FNAME = "fname";
    public static final String KEY_MONAME = "moname";
    public DatabaseHandler(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    // Creating Tables
    @Override
    public void onCreate(SQLiteDatabase db) {
        // Category table create query
        String CREATE_CATEGORIES_TABLE = "CREATE TABLE " + TABLE_LABELS + "("
                + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT)";
        db.execSQL(CREATE_CATEGORIES_TABLE);
        String CREATE_CONTACTS_TABLE = "CREATE TABLE " +
                TABLE_RECORDS +
                "(" +
                KEY_IDS + " INTEGER PRIMARY KEY," +
                KEY_NAMES + " TEXT," + KEY_FNAME + " TEXT," + KEY_MONAME + " TEXT)";
        db.execSQL(CREATE_CONTACTS_TABLE);
    }

    // Upgrading database
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_LABELS);
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_RECORDS);

        // Create tables again
        onCreate(db);
    }

    /**
     * Inserting new lable into lables table
     * */
    /*public void insertLabel(String label){
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_NAME, label);

        // Inserting Row
        db.insert(TABLE_LABELS, null, values);
        db.close(); // Closing database connection
    }*/

    /**
     * Getting all labels
     * returns list of labels
     * */
    public List<String> getAllLabels(){
        List<String> labels = new ArrayList<String>();

        // Select All Query
        String selectQuery = "SELECT  * FROM " + TABLE_LABELS;

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
                labels.add(cursor.getString(1));
            } while (cursor.moveToNext());
        }

        // closing connection
        cursor.close();
        db.close();

        // returning lables
        return labels;
    }
    public List<String> getAllItems(){
        List<String> dataitems = new ArrayList<String>();

        // Select All Query
        String selectQuery = "SELECT  * FROM " + TABLE_LABELS;

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
                dataitems.add(cursor.getString(0));
            } while (cursor.moveToNext());
        }

        // closing connection
        cursor.close();
        db.close();

        // returning lables
        return dataitems;
    }
    public Cursor getAllRecords() {
        SQLiteDatabase db = this.getWritableDatabase();
        return db.query(TABLE_RECORDS,null,null,null,null,null,null);
    }


4.     listviewitem_record.xml


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

    <TextView
        android:layout_width="110dp"
        android:layout_weight="8"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:text="Id"
        android:textStyle="bold"
        />
    <TextView
        android:layout_width="110dp"
        android:layout_weight="10"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:text="Name"
        android:textStyle="bold"
        />
    <TextView
        android:layout_width="110dp"
        android:layout_weight="10"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:text="Fname"
        android:textStyle="bold"/>
    <TextView
        android:layout_width="110dp"
        android:layout_weight="10"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:text="Moname"
        android:textStyle="bold"/>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:gravity="center"
    android:layout_marginTop="-110dp">
    <TextView
        android:id="@+id/euserid"
        android:layout_width="110dp"
        android:layout_weight="8"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"/>
    <TextView
        android:id="@+id/eusername"
        android:layout_width="110dp"
        android:layout_weight="10"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"/>
    <TextView
        android:id="@+id/efname"
        android:layout_width="110dp"
        android:layout_weight="10"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"/>
    <TextView
        android:id="@+id/emoname"
        android:layout_width="110dp"
        android:layout_weight="10"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"/>

</LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="-80dp"
        android:layout_marginLeft="300dp"
        >
    <CheckBox
        android:id="@+id/record_checkbox"
        android:layout_width="110dp"
        android:layout_weight="2"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:focusable="false"
        />
    </LinearLayout>

</LinearLayout>

0 个答案:

没有答案