问题:在我检查了自定义CheckBoxes
中显示的多个ListView
后,我仍然返回自定义{{1}中显示的整行数据值无论我做出什么选择。在我检查后,我猜ListView
的状态从未改变过。那么在我检查多个CheckBox
后如何设置CheckBox
状态(true)?此外,当我点击提交CheckBoxes
时,如何从CheckBoxes
获取已检查的ListView
位置?然后,如何调用Button
的类来检索特定的数据行,包括Model
和TextView
(供用户输入)以显示在另一个自定义列表中以进行检查{{ 1}}只?
摘要:我想在另一页上显示仅选中复选框的值行数组。
testing1.xml
EditText
testing.xml
CheckBoxes
MultipleSet1.java类:
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="310dp"
android:layout_x="0dp"
android:layout_y="-4dp" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="293dp" >
</ListView>
</LinearLayout>
</ScrollView>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="113dp"
android:layout_y="346dp"
android:text="Button" />
</AbsoluteLayout>
InteractiveListViewAdapter.java类:
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="208dp"
android:layout_y="4dp"
android:text="CheckBox" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="11dp"
android:layout_y="15dp"
android:text="TextView" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="22dp"
android:layout_y="49dp"
android:text="TextView" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="42dp"
android:layout_y="89dp"
android:text="TextView" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="35dp"
android:layout_y="123dp"
android:text="TextView" />
<EditText
android:id="@+id/editText1"
android:layout_width="42dp"
android:layout_height="wrap_content"
android:layout_x="147dp"
android:layout_y="13dp"
android:ems="10"
android:inputType="number" />
</AbsoluteLayout>
Model.java类:
public class MultipleSet1 extends ListActivity
{
List<Model> list = new ArrayList<Model>();
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
View viewToLoad = LayoutInflater.from(this.getParent()).inflate(R.layout.testing1, null);
this.setContentView(viewToLoad);
//final ViewHolder viewHolder = new ViewHolder();
String temp = "Set_A";
String response = null;
ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("Name", temp));
try
{
response = CustomHttpClient.executeHttpPost("PhPScripts", postParameters);
}
catch (Exception e)
{
// TODO Auto-generated catch block
Toast.makeText(getApplicationContext(), "Fail to connect to server7777777777.", 3).show();
}
int size = 0;
try
{
JSONArray jArray = new JSONArray(response);
size = jArray.length();
for(int i =0; i<size; i++)
{
JSONObject json_data = jArray.getJSONObject(i);
list.add(get(json_data.getString("description"), json_data.getString("price"), false));
}
}
catch (JSONException e)
{
Toast.makeText(getApplicationContext(), "Fail to connect to server7777777777.", 3).show();
}
ArrayAdapter<Model> adapter = new InteractiveListViewAdapter(this, list);
setListAdapter(adapter);
Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
//@Override
public void onClick(View v) {
ListView list = (ListView)findViewById(android.R.id.list);
list = getListView();
list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
int size = list.getCount();
String checked = "";
String unchecked = "";
SparseBooleanArray sparseBooleanArray = list.getCheckedItemPositions();
for(int i = 0; i < size; i++)
{
if(sparseBooleanArray.get(i) == true)
{
checked += list.getItemAtPosition(i).toString() + "\n";
}
else if(sparseBooleanArray.get(i) == false)
{
unchecked+= list.getItemAtPosition(i).toString() + "\n";
}
}
Intent intent = new Intent(getApplicationContext(), SingleSet.class);
intent.putExtra("TAG_DESCRIPTION", unchecked);
// Create the view using TabTour's LocalActivityManager
View view1 = bookingTab.group.getLocalActivityManager().startActivity("BookingTab", intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
.getDecorView();
// Again, replace the view
bookingTab.group.replaceView(view1);
}
});
}
private Model get(String name, String score, boolean selected)
{
return new Model (name, score, selected);
}
}
答案 0 :(得分:0)
您的代码存在很多问题:
AbsolutLayout
,该类已被弃用,因为您无法使用它来制作在Android设备的所有屏幕上都能很好扩展的布局那里有。ListView
)放在其他可滚动小部件(如ScrollView
)中,这样做不会很顺利。AsyncTasks
从Internet获取数据。ActivityManager
做了什么,但我觉得这不是正确的。只需使用Activity
的{{1}}方法和startActivity
。Intent
使用默认的getCheckedItemPositions
和SDK中的一个布局。如果您使用自定义行布局制作自己的适配器,则必须自己管理ArrayAdapter
状态(并设置检索该状态的方法)。这部分应该很简单,有成千上万的问题和博客如何做到这一点。CheckBox
方法不正确。对于getView
方法的每次调用,应在两个视图上设置标记(因此应将它们设置在getView
块之外)。我也不认为那些听众会很好地工作。if (convertView == null)
,但实际上并未使用Intent
来启动新的Intent
,因此您不会将任何信息传递给新启动的Activity
。这应该让你朝着正确的方向前进。