我有一个充满自定义的列表ArrayAdapter.
我想每秒更新一个进度条,所以我试图使用notifyDataSetChanged()以重新绘制列表,但它似乎不起作用.
我有一个EditText,一个按钮和一个微调器.单击该按钮时,微调器将添加一个新项目,其中包含您在EditText中输入的名称.但这是问题,我的adapter.add()方法似乎不起作用...这是我的代码:
public class Spr extends Activity {
Button bt1;
EditText et;
ArrayAdapter<CharSequence> adapter;
Spinner spinner;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bt1 = (Button)this.findViewById(R.id.bt1);
et = (EditText)this.findViewById(R.id.et);
spinner = (Spinner)this.findViewById(R.id.spr);
adapter = ArrayAdapter.createFromResource(
this, R.array.planets_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String temp = et.getText().toString();
adapter.add(temp);
adapter.notifyDataSetChanged();
spinner.setAdapter(adapter);
}
});
spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
Toast.makeText(parent.getContext(), "The planet is " +
parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show(); …Run Code Online (Sandbox Code Playgroud) 我有一个ListView(带有setTextFilterEnabled(true))和一个自定义适配器(扩展ArrayAdapter),每当添加/插入新项目时,我都会从主UI线程更新.一切都工作正常 - 新项目立即显示在列表中.但是,当我尝试过滤列表时,这就停止了.
过滤工作,但我做了一次,我所有成功修改列表内容(添加,删除)的尝试都不再显示.我使用Log来查看适配器的列表数据是否得到了正确的更新,但确实如此,但它不再与显示的ListView同步.
是什么导致了这个以及如何最好地解决这个问题?
我的Activity中有一个ListView,它从SimpleAdapter的扩展类中获取值.当我添加或删除其中的一些数据时,这个正常工作.
但我的问题是,当我的项目列表为空时,我想用"No item inhere"之类的消息替换listView或类似的东西.
我尝试这样做,这样:
class FavAdapter extends SimpleAdapter{
Activity context;
ArrayList<HashMap<String,String>> data;
String[] items;
int[] champs;
int layout;
FavAdapter(Activity _context, ArrayList<HashMap<String,String>> _data, int _layout, String[] _items, int[] _champs){
super(_context, _data, _layout, _items, _champs );
this.data = _data;
this.context = _context;
this.items = _items;
this.layout = _layout;
this.champs = _champs;
}
public View getView(int pos, View convertView, ViewGroup parent){
//Recycling
View row = convertView;
//Else get from XML
if(row == null){
LayoutInflater infla = context.getLayoutInflater();
row = infla.inflate(layout, null);
} …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的数组列表:
private ArrayList<Locations> Artist_Result = new ArrayList<Location>();
Run Code Online (Sandbox Code Playgroud)
此Location类有两个属性:id和location.
我需要将我绑定ArrayList到一个微调器.我这样试过:
Spinner s = (Spinner) findViewById(R.id.SpinnerSpcial);
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item, Artist_Result);
s.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
但是,它显示对象的十六进制值.所以我想我必须设置显示该微调控制器的文本和值.
我正在从a中检索字符串列表,webservice我想在AutoCompleteTextField不管内置AutoCompleteTextField过滤器的情况下列出它们.
我怎么做?有没有办法很容易地禁用它的内部过滤(最好没有子类)我已经将所有结果加载到a中ArrayAdapter,问题是它们中的一些因为过滤而没有显示出来.
如果我走向错误的方向,请指出正确的方向.
java android filter autocompletetextview android-arrayadapter
我有一个带有两个按钮的自定义ListView,当我点击任何一行上的任何一个按钮时,我想在Listview上获得文本标签,现在只需弹出一个Toast.到目前为止没有任何工作我继续得到我的数组中的最后一项.
这是一个屏幕截图,让您更好地了解我的意思

这是我的自定义ListView的Adapter子类
static final String[] Names =
new String[] { "John", "Mike", "Maria", "Miguel"};
class MyArrayAdapter extends ArrayAdapter<String> {
private final Context context;
int which;
public MyArrayAdapter(Context context, String[] pValues) {
super(context, R.layout.main, pValues);
this.context = context;
values = pValues;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.main, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.label);
ImageView imageView = (ImageView) rowView.findViewById(R.id.logo);
Button call = (Button) rowView.findViewById(R.id.button1);
Button chat …Run Code Online (Sandbox Code Playgroud) 我在Welcome Activity上有一些基本代码,它像往常一样简单地绑定List适配器:
final ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, android.R.id.text1);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Run Code Online (Sandbox Code Playgroud)
这曾经有效,直到我更新到API级别25.此时,没有其他更改,微调器下拉列表的文本变得不可读:
我的主题的父级是"Theme.AppCompat.Light.NoActionBar",但同样,我没有玩那里的颜色,因为它显示正确(API <25)没有任何改变.任何的想法?
我知道我可以用一些setTextColor()内部修复它spinner.setOnItemSelectedListener(),但主要的一点是理解为什么它工作,现在它没有,因为这可能是我身边某些概念错误的标志,甚至某种Android bug.事实上,我注意到相同的问题(深色背景上的黑色文本)在非常标准的小部件/应用程序上,如Cyanogen/LineageOS默认天气一:
我有这个问题,我有
private ArrayList<CustomItem> items;
private ArrayAdapter<CustomItem> arrayAdapter;
Run Code Online (Sandbox Code Playgroud)
我显示项目中的数据,我在listview中看到的数据,现在我想更新数据并查看这些新数据
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
}
Run Code Online (Sandbox Code Playgroud)
在第一次更改我看到数据被清理,但在第二次更改我没有在列表视图中看到新数据,我检查,该项目不会清空
我不知道错误在哪里,你能帮助我吗?最好的评论安东尼奥
我曾经ListView添加页脚视图,并删除它在Android版本4.4以上的工作正常但在Android版本4.3及以下的问题我使用以下代码添加页脚
listfortestmyfeed.addFooterView(footerView);
Run Code Online (Sandbox Code Playgroud)
并删除代码后的页脚
listfortestmyfeed.removeFooterView(footerView);
Run Code Online (Sandbox Code Playgroud)
在我的logcat中删除显示类强制转换异常的页脚
07-11 20:07:49.665: E/ACRA(22818): com.sample.activities fatal error : com.sample.adapters.MyfeedAdapter cannot be cast to android.widget.HeaderViewListAdapter
07-11 20:07:49.665: E/ACRA(22818): java.lang.ClassCastException: com.sample.adapters.MyfeedAdapter cannot be cast to android.widget.HeaderViewListAdapter
07-11 20:07:49.665: E/ACRA(22818): at android.widget.ListView.removeFooterView(ListView.java:390)
07-11 20:07:49.665: E/ACRA(22818): at com.sample.fragments.MyfeedNewFragment$FollowingBloopsdoinback.onPostExecute(MyfeedNewFragment.java:172)
07-11 20:07:49.665: E/ACRA(22818): at com.sample.fragments.MyfeedNewFragment$FollowingBloopsdoinback.onPostExecute(MyfeedNewFragment.java:1)
07-11 20:07:49.665: E/ACRA(22818): at android.os.AsyncTask.finish(AsyncTask.java:631)
07-11 20:07:49.665: E/ACRA(22818): at android.os.AsyncTask.access$600(AsyncTask.java:177)
07-11 20:07:49.665: E/ACRA(22818): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
07-11 20:07:49.665: E/ACRA(22818): at android.os.Handler.dispatchMessage(Handler.java:99)
07-11 20:07:49.665: E/ACRA(22818): at android.os.Looper.loop(Looper.java:137)
07-11 20:07:49.665: E/ACRA(22818): at android.app.ActivityThread.main(ActivityThread.java:5103)
07-11 20:07:49.665: E/ACRA(22818): at java.lang.reflect.Method.invokeNative(Native …Run Code Online (Sandbox Code Playgroud)