Articles of android arrayadapter

更新Arrayadapter中的数据

我有这个问题,我有 private ArrayList<CustomItem> items; private ArrayAdapter<CustomItem> arrayAdapter; 我显示项目中的数据,这个数据我在列表视图中看到,现在我想更新数据,看到这个新的数据 if (!items.isEmpty()) { items.clear(); // i clear all data arrayAdapter.notifyDataSetChanged(); // first change items = getNewData();// insert new data and work well arrayAdapter.notifyDataSetChanged(); // second change } 在第一次更改我看到的数据清理,但在第二次更改我没有看到新的数据在列表视图中,我检查和项目不空 我不知道错误在哪里,你能帮我吗? 最好的安东尼奥

GetView参数“convertview”在新的“position”参数上不为null

我正在使用一个ArrayAdapter列出我自己types的对象(只有一种types),我给了用户一个选项来创build更多的项目(从而为这些项目创build更多的视图)。 在某些时候,getView发送一个新的“位置”索引与非空“convertView”。 然后在最后一个位置显示第一个视图。 之后,当滚动的意见都搞混了。 我假设这意味着我用我不应该拥有的方式来操纵观点,但我只是不知道在哪里。 这里是一些代码: @Override public View getView(int position, View convertView, ViewGroup parent) { View v; PreviewItemHolder holder = null; // Initialize view if convertview is null if (convertView == null) { v = newView(parent, position); } // Populate from previously saved holder else { // Use previous item if not null v […]

自定义ArrayAdapter的getView中的Nullpointerexception

我在我的应用程序的自定义ArrayAdapter中得到Nullpointerexception。 我不知道为什么Nullpointer在这里被提出。 而我不能重现这个例外。 这个exception没有出现很长时间,我没有代码的变化,所以这使得它更奇怪。 代码是: private class MyAdapter<T> extends ArrayAdapter<String> { private Map<String, String> selectedDevices; public MyAdapter(Context context, int textViewResourceId) { super(context, textViewResourceId); BluetoothDbAdapter dbHelper = new BluetoothDbAdapter(context); dbHelper.open(); selectedDevices = dbHelper.fetchAllDevicesAsMap(); dbHelper.close(); } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = super.getView(position, convertView, parent); CheckedTextView item = (CheckedTextView) view; […]

如何为ListView中的每一行设置不同的高度?

我有问题设置ListView中单个行的高度。 我已经阅读了数以百计的论坛和博客文章,但似乎没有为我工作。 我有一个ListView与ArrayAdapter<Order> 。 根据Order对象的属性,使用不同的布局,每行的高度不同。 但是,最后,所有的行都有相同的高度。 我想这是给ArrayAdapter的构造函数的布局的高度。 有谁知道如何分别控制每一排的高度? 谢谢你的回答,菲利普

错误:ArrayAdapter要求资源ID是一个TextView

这是什么意思? 我一直在与我使用ArrayAdapter这个ListView战斗。 我写了这个很好的对话框片段,我已经调用了一个updateUI listner因为我想更新这个ListView我在我的片段从DialogFragment首先ArrayAdapter是一个类的复杂types我创build: ArrayAdapter<Location> theLocations; … //in oncreateview theLocations = new ArrayAdapter<Location>(mContext, R.layout.location_row, locations); //here locations is an ArrayList<Location> 那么我有: public void onUIUpdate(Location l) { //called from dialog fragment locations.add(l); theLocations.notifyDataSetChanged(); } 那么给了上面的错误,所以我把它切换到只使用一个 String[] locationNames = new String[sizeofLocations]; theLocations=new ArrayAdapter<String>(mContext, R.layout.location_Row, locationNames ); public void onUIUpdate(Location l) { locations.add(l); locationNames = new String[locations.size()]; for(locations.size() […]

回收在一个列表视图中的意见,值得吗?

当重写android listview上的baseadapter时,你必须实现这个方法public View getView(int position, View convertView, ViewGroup parent) 。 convertview是滚动时先前从列表中移除的视图,并且给出它以便您可以重用该视图而不是创build新视图。 我的问题是,真的有必要重用视图吗? 如果只有一部分数据被改变,我可以理解它的重用。 但是创造一个观点的开销真的很重要吗? 关于使用我所看到的列表视图的每个教程都告诉你要回收视图,即使是像textview这样简单的视图也是如此。 我想我的问题是为什么谷歌决定使这个getView方法的默认行为?

通过setRetainInstance(true)将上下文传递给Fragment中的ArrayAdapter会导致泄漏?

我有一个ListFragment,将通过ArrayAdapter显示项目列表,我试图处理configuration更改(设备旋转)我觉得传递活动上下文到arrays适配器可能会导致内存泄漏,当循环重新启动活动和ListFragment适配器保留,因为我使用setRetainInstance(true),有人可以告诉我,如果我的理解是真实的? 如果是这样的话,最好的办法是什么。 是的,我不想null我的适配器onDetach并重新使用一次片段视图重新创build。 public class DummyXListFragment extends RoboSherlockListFragment{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (adapter == null) adapter = new DummyItemAdapter(getActivity(), android.R.layout.simple_list_item_1, list); }

与自定义适配器多选AlertDialog

我正在尝试创build一个AlertDialog与多项select选项。 我已经尝试了setMultiChoiceItems但是我有一个ArrayList<Category>而不是一个CharSequence所以我尝试使用适配器。 setAdapter的问题是,当我select一个项目,它closures对话窗口。 而我想要的是select的项目,然后点击确定button,看看哪些项目select。 AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Pick a color"); ArrayAdapter<Category> catsAdapter = new ArrayAdapter<Category>(this, android.R.layout.select_dialog_multichoice,this.categories); builder.setAdapter(catsAdapter, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { } }); builder.setPositiveButton("Save", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //do something } });; AlertDialog alert = builder.create(); alert.show();

显示HTML格式的string

我需要一个如何显示我已经用简单的html标记到TextView中的string的例子。 我发现“Spanned fromHtml(String source)”,但是我不知道如何将其插入到我的java代码中。 这是我的Java: package com.SorenWinslow.TriumphHistory; import android.app.ListActivity; import android.os.Bundle; import android.widget.ArrayAdapter; public class TriumphHistory extends ListActivity { String[] HistoryList; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ArrayAdapter<String> adapter; HistoryList = getResources().getStringArray(R.array.history); adapter = new ArrayAdapter<String> (this,R.layout.historylistlayout,HistoryList); setListAdapter(adapter); } } 这是一个历史的样本: <?xml version="1.0" encoding="utf-8"?> […]

列表视图适配器不工作,getView不被调用。

我觉得我疯了。 有一件很简单的事情把一个自定义的适配器绑定到一个Listview让我头疼。 发布代码并解释: MainActivity.java package com.example.pruebalist; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.ArrayAdapter; import android.widget.ListView; public class MainActivity extends Activity { private static String[] data = new String[] {"0","1","2","3"}; public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); Log.v("MainActivity","Inside MainActivity"); setContentView(R.layout.main); ListView lstView = (ListView)findViewById(R.id.listNoticias); ArrayAdapter<String> adapter = new LstAdapter(this, R.layout.row, data); […]