我想知道,有什么指导方针,我们如何选择ArrayAdapter和SimpleAdapter.
对于每个列表项,它们将由几个TextViews和Views呈现,这些布局很好.通过使用ArrayAdapter或,我意识到我可以毫无问题地实现它们SimpleAdapter.
我们如何选择它们是否有任何指导方针?我的猜测是
ArrayAdapter使我们能够动态添加新项目,即使在此期间显示列表后也是如此.注意,ArrayAdapter有方法add.SimpleAdapter 用于大小写,一旦显示列表,就不能再添加新项目了.这是我们应该遵循的准则吗?
我正在使用一个简单的适配器来显示我的代码.不幸的是,我需要更改顶部的textView颜色.
这是我的代码片段:
// Keys used in Hashmap
String[] from = { "txt1", "txt2" };
// Ids of views in listview_layout
int[] ids = { android.R.id.text1, android.R.id.text2 };
SimpleAdapter adapter = new SimpleAdapter(this, aList,
android.R.layout.simple_list_item_2, from, ids);
setListAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
我试图创建自己的simple_list_item_2,但由于某种原因,它不允许我在xml中更改textView的颜色.关于如何做到这一点的任何想法?
我最后的想法是:
findViewById(android.R.id.text1).setTextColor(#000) 但我不知道放在哪里,我的十六进制代码不起作用.
我是Android开发的新手.我试图通过使用SimpleAdapter填充一个微调器.但是微调器的列表显示空白元素.当我单击任何元素时,其文本在Toast中正确显示.请告诉我下面的代码中有什么问题.
public void onCreate(Bundle savedInstanceState) {
private List<Map<String, String>> data = new ArrayList<Map<String, String>>();
String[] from = new String[] { "colorsData" };
int[] to = new int[] { R.id.spinner };
String[] colors = getResources().getStringArray(R.array.colorsData);
for (int i = 0; i < colors.length; i++) {
data.add(addData(colors[i]));
}
Spinner spinner = (Spinner) findViewById(R.id.spinner);
SimpleAdapter simpleAdapter = new SimpleAdapter(this, data, android.R.layout.simple_spinner_item, from, to);
simpleAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(simpleAdapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(
parent.getContext(),
"Selected …Run Code Online (Sandbox Code Playgroud) 我有问题添加arraylist到列表视图,这里将解释我的问题..告诉我这里有什么问题...我有三个线性布局,在中间布局我有列表视图,如下面的xml文件所示. `.
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="0.59"
android:src="@drawable/x_title" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout_grouplist"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.09"
android:orientation="vertical"
android:weightSum="1" >
<ListView
android:id="@+id/listview_grouplist"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
</ListView>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.39"
android:text="TextView" />
<Button
android:id="@+id/button5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
</LinearLayout>`
Run Code Online (Sandbox Code Playgroud)
当我尝试使用数组适配器将项目添加到列表时,它对我来说工作正常..但它不适用于列表适配器.它崩溃了.
ListAdapter adapter = new SimpleAdapter(this,
mylist,
R.layout.grouplistlayout,
new String[] { …Run Code Online (Sandbox Code Playgroud) 我从JSON数组获取数据,我可以在textviews中显示文本,但显示图像时出现问题.
这是主要活动:
public class test extends ListActivity {
// url to make request
private static String url = "http://test/json.php";
// JSON Node names
private static final String CONTACTS = "contacts";
private static final String NAME = "name";
private static final String IMAGE = "image";
// contacts JSONArray
JSONArray contacts = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Hashmap for ListView
ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();
// Creating JSON Parser instance
JSONParser jParser = new JSONParser(); …Run Code Online (Sandbox Code Playgroud) 我有两列的类别表category_id和name.我创建了一个名为的数据助手类CategoryDataHelper.我有一个名为getCategoryCursor()该助手类的方法,它从类别表中获取id和名称并返回游标.使用该光标,我已经习惯SimpleCursorAdapter显示类别列表.它工作正常.
public class Categories extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
categoryDataHelper = new CategoryDataHelper(getApplicationContext());
Cursor categoryCursor = categoryDataHelper.getCategoryCursor();
ListAdapter adapter = new SimpleCursorAdapter (
this,
android.R.layout.simple_list_item_1,
categoryCursor,
new String[] { CategoryDataHelper.NAME },
new int[] {android.R.id.text1});
// Bind to our new adapter.
setListAdapter(adapter);
list = getListView();
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Here I want the category_id …Run Code Online (Sandbox Code Playgroud) 我可以知道在自定义SimpleAdapter中删除地图列表项后如何刷新ListView项目?
我已经用list.remove(position)成功实现了删除列表项,但是当我试图调用list.notifyAll()函数但它给了我一个错误消息,如"java.lang.IllegalMonitorStateException:对象在notifyAll之前没有被线程锁定()".
我希望你能帮助我.这是自定义SimpleAdapter的代码.
public class DeleteAdapter extends SimpleAdapter {
Context context;
List<? extends Map<String, ?>> list;
int resource;
String[] from;
int[] to;
public FDeleteAdapter(Context context, List<? extends Map<String, ?>> data,
int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
this.context = context;
this.list = data;
this.resource = resource;
this.from = from;
this.to = to;
// TODO Auto-generated constructor stub
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final View row = super.getView(position, convertView, …Run Code Online (Sandbox Code Playgroud) 我有4个TextViews,2个ImageViews,2个Buttons和2个小部件,它们是a中行定义的一部分ListView.数据来自XML和a SimpleAdapter.要访问这些,TextViews我ViewBinde在自定义类中实现r并覆盖setViewValue.这是有效的,TextViews我想动态改变的两个是在setViewValue.令我困惑的是为什么我的另外两个TextView没有通过setViewValue.我这是基于设置一个断点,执行线程只输入两次.我期待看到它4次或更多次?
这是setViewValue我设置断点的地方.
@Override
public boolean setViewValue(View view, Object data, String text)
{
if(view.getId() == R.id.txtvw1)
{
//blah do some stuff
}
else if (view.getId() == R.id.txtvw2)
{
//Blah do some stuff
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
xml声明TextViews(1显示,4不):
<TextView
android:id="@+id/txtvw1"
android:layout_centerHorizontal="true"
android:layout_width="185dp"
android:layout_height="25dp"
android:textSize="20sp"
android:layout_marginTop="60dp"
android:gravity="center"
android:inputType="none"
android:text="@string/str_StaticA"
android:textColor="#C0F700" />
<TextView
android:id="@+id/txtvw4"
android:layout_alignParentLeft="true"
android:layout_marginLeft="35dp"
android:layout_width="95dp"
android:layout_height="50dp" …Run Code Online (Sandbox Code Playgroud) 有人能指出我在这个SimpleAdapter中获得ImageView的正确方向吗?TAG_IMAGE应该是Imageview.我得到这个:类型失配:无法从ImageView转换为int.是的,我是一个菜鸟.
protected void onPostExecute(String file_url) {
// dismiss the dialog after getting all products
pDialog.dismiss();
// updating UI from Background Thread
runOnUiThread(new Runnable() {
public void run() {
/**
* Updating parsed JSON data into ListView
* */
ListAdapter adapter = new SimpleAdapter(
AllProductsActivity.this, productsList,
R.layout.list_item, new String[] { TAG_PID,
TAG_NAME, TAG_PRICE, TAG_RANDOM, TAG_IMAGE },
new int[] { R.id.pid, R.id.name, R.id.price,
R.id.random, R.id.image });
// Imageview to show
// updating listview
setListAdapter(adapter);
}
});
Run Code Online (Sandbox Code Playgroud) 我正在Android片段中开发一个ListView.该类扩展了ListFragment.
我试过这个例子:http: //www.heikkitoivonen.net/blog/2009/02/15/multicolumn-listview-in-android/
但问题是,如果类扩展了ListFragment,则没有定义构造函数SimpleAdapter,将其更改为ListActivity会使SimpleAdapter工作,但是应用程序不会.
这是代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View tmp_view = inflater.inflate(R.layout.clients_list, container, false);
ListView list = (ListView) tmp_view.findViewById(R.id.list);
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map = new HashMap<String, String>();
map.put("train", "101");
map.put("from", "6:30 AM");
map.put("to", "7:40 AM");
mylist.add(map);
map = new HashMap<String, String>();
map.put("train", "103(x)");
map.put("from", "6:35 AM");
map.put("to", "7:45 AM");
mylist.add(map);
// ...
SimpleAdapter mSchedule = new SimpleAdapter(this, mylist, …Run Code Online (Sandbox Code Playgroud)