我有一個列表視圖中左的文本和複選框在右側列表視圖side.My顯示從中我comes.Now希望當我點擊複選框,並用按鈕來保存它得到的地址與SMS的身體和地址收件箱.my複選框是可點擊的,我的列表視圖不能被點擊,因爲它顯示爲文本。 我的代碼如下:如何獲取複選框中的listview值?
public class SMSInbox extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.inbox);
final ListView lViewSMS = (ListView) findViewById(R.id.list);
if(fetchInbox()!=null)
{
String[] from = new String[]{};
int to = R.id.text1;
ArrayAdapter adapter = new ArrayAdapter(this,R.layout.row,to,fetchInbox());
lViewSMS.setAdapter(adapter);
}
}
public ArrayList fetchInbox()
{
ArrayList sms = new ArrayList();
Uri uriSms = Uri.parse("content://sms/inbox");
Cursor cursor = getContentResolver().query(uriSms, new String[]{"_id", "address", "date", "body"},null,null,null);
cursor.moveToFirst();
while (cursor.moveToNext())
{
String address = cursor.getString(1);
String body = cursor.getString(3);
System.out.println("======> Mobile number => "+address);
System.out.println("=====> SMS Text => "+body);
sms.add("Address=> "+address+"\n SMS => "+body);
}
return sms;
}
}
我的XML代碼inbox.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="match_parent"
android:orientation="vertical" >
<Button android:id="@+id/get_view_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Get CheckBox" />
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
我row.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/text1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dip">
</TextView>
<CheckBox
android:id="@+id/check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginLeft="4px"
android:layout_marginRight="10px" >
</CheckBox>
</RelativeLayout>
查看代碼:
public class InteractiveArrayAdapter extends ArrayAdapter<Model> {
private final List<Model> list;
private final Activity context;
public InteractiveArrayAdapter(Activity context, List<Model> list) {
super(context, R.layout.row, list);
this.context = context;
this.list = list;
}
static class ViewHolder {
protected TextView text;
protected CheckBox checkbox;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
if (convertView == null) {
LayoutInflater inflator = context.getLayoutInflater();
view = inflator.inflate(R.layout.row, null);
final ViewHolder viewHolder = new ViewHolder();
viewHolder.text = (TextView) view.findViewById(R.id.text1);
viewHolder.checkbox = (CheckBox) view.findViewById(R.id.check);
viewHolder.checkbox
.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
Model element = (Model) viewHolder.checkbox
.getTag();
element.setSelected(buttonView.isChecked());
}
});
view.setTag(viewHolder);
viewHolder.checkbox.setTag(list.get(position));
} else {
view = convertView;
((ViewHolder) view.getTag()).checkbox.setTag(list.get(position));
}
ViewHolder holder = (ViewHolder) view.getTag();
holder.text.setText(list.get(position).getName());
holder.checkbox.setChecked(list.get(position).isSelected());
return view;
}}
Model.java
public class Model {
private String name;
private boolean selected;
public Model(String name) {
this.name = name;
selected = false;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isSelected() {
return selected;
}
public void setSelected(boolean selected) {
this.selected = selected;
}}
讓我知道該怎麼做才能從smsinbox.java的地址中複選框單擊。並且如何確認是否複選框獲取地址?
請幫我解決這個問題。
男人,你從來沒用過你InteractiveArrayAdapter,你已經創造了它,但使用普通ArrayAdapter ......我在這裏失去了一些東西?......你會使用它們(InteractiveArrayAdapter或ArrayAdapter)的哪一個? –
讓我清楚如何在代碼格式中使用InteraractiveArrayAdapter而不是ArrayAdapter。 – divya
代替使用 「ArrayAdapter適配器=新ArrayAdapter(此,R.layout.row,於fetchInbox());」你將使用「InteractiveArrayAdapter adapter = new InteractiveArrayAdapter(this,model);」 .....順便說一句,兩者都是正確的,但問題是,你認爲你正在使用一些東西(InteractiveArrayAdapter),而實際上你不是(因爲你正在使用ArrayAdapter)。 –