4

私はAndroidを初めて使用します。私が取り組んでいる最初のプロジェクトは、プレーヤーをチームに入れることです。データベースからすべてのプレーヤーを取得するリストビューがあります。それぞれの名前の横にチェックボックスがあり、下部にデータベースを更新するためのボタンがあります。これまでのところ、これは私が得ているものです。

http://dyp.im/W79JdmfIk

これが私の活動です

 package com.example.sqllitetest;

 import android.app.AlertDialog;
 import android.app.ListActivity;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.database.Cursor;
 import android.os.Bundle;
 import android.support.v4.widget.ResourceCursorAdapter;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.*;

public class Tester extends ListActivity {

MyAdapter mListAdapter;
PlayersDBAdapter mDbHelper;
private Button button;
private Context context = this;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mDbHelper = new PlayersDBAdapter(this);
    mDbHelper.open();
    Cursor myCur = mDbHelper.fetchAllPlayers();
    startManagingCursor(myCur);
    setContentView(R.layout.playertoteam);

   // registerForContextMenu(getListView());
   // ((Tester) context).setContentView(R.layout.playertoteam);
    //getListView().addFooterView(button);
    mListAdapter = new MyAdapter(Tester.this, myCur);
    setListAdapter((ListAdapter) mListAdapter);

    Button button = (Button) findViewById(R.id.alertBox);
    button.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
            setResult(RESULT_OK);
            finish();
        }

    });

}


private class MyAdapter extends ResourceCursorAdapter {

    public MyAdapter(Context context, Cursor cur) {
        super(context, R.layout.playertoteam, cur);
    }

    @Override
    public View newView(Context context, Cursor cur, ViewGroup parent) {
        LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        return li.inflate(R.layout.playertoteam, parent, false);
    }

    @Override
    public void bindView(View view, Context context, Cursor cur) {
        TextView tvListText = (TextView)view.findViewById(R.id.code);
        CheckBox cbListCheck = (CheckBox)view.findViewById(R.id.checkBox1);

        tvListText.setText(cur.getString(cur.getColumnIndex(mDbHelper.KEY_NAME)));
        cbListCheck.setChecked((cur.getInt(cur.getColumnIndex(mDbHelper.KEY_ID))==1? false:true));
    }




}
}

そしてこれが私のxmlファイルです

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

 <Button
    android:id="@+id/alertBox"
    android:layout_alignParentBottom="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/confirm" />
  <RelativeLayout
            android:id="@+id/relativeLayout3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="top" >
            <ListView
                android:id="@android:id/list"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_above="@id/alertBox"
                />
            <TextView
                android:id="@+id/code"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                />

              <CheckBox android:id="@+id/checkBox1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:focusable="false"
                android:focusableInTouchMode="false"

                />

  </RelativeLayout>

</LinearLayout>

行からボタンを削除する方法と、メインの確認ボタンの下にあるチェックボックスを知りたいのですが。また、これがこのようなことを行うための最良の方法であるかどうかを知りたいと思います。これもまた、私は新しく、正しい方法を検索する方法がわからないためです。

4

2 に答える 2

2

ResourceCursorAdapterは、ListViewのすべての行に対して、newView()メソッドで拡張されるビューを作成します。このため、すべての行にボタンが表示されます。Soln:ListViewの行レイアウトを定義する別のxmlを作成し、この新しいレイアウトをnewView()メソッドで拡張します。そして、メインレイアウト、つまりplayertoteam.xmlにはボタンとListViewのみがあります。

playertoteam.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="6dip" >

<Button
    android:id="@+id/alertBox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:text="@string/confirm" />

<ListView
    android:id="@android:id/list"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_above="@id/alertBox" />

</RelativeLayout>

row_layout.xml

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

  <TextView
    android:id="@+id/code"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true"/>

  <CheckBox
    android:id="@+id/checkBox1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:focusable="false"
    android:focusableInTouchMode="false" 
    android:layout_alignParentRight="true"/>

 </RelativeLayout>

ListViewの例はここにあります

于 2013-01-31T21:09:27.797 に答える
0

listviewのaddFooterViewメソッドを使用できます。

View footerView =
((LayoutInflater)
ActivityContext.
getSystemService
(Context.LAYOUT_
INFLATER_SERVICE)).inflate
(R.layout.footer_
layout, null, false);
ListView.addFooterView
(footerView);
于 2013-01-31T18:28:03.753 に答える