标签: android-arrayadapter

Android中的ArrayAdapter和ListAdapter之间的区别?

我知道ListAdapter是一个接口而ArrayAdapter是一个类.所以我们只能实例化ArrayAdapter.我遇到了一个代码

ListAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, songNames);
Run Code Online (Sandbox Code Playgroud)

但我能够做同样的事情

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, songsArray);
Run Code Online (Sandbox Code Playgroud)

所以我想知道,在什么地方我们需要ListAdapter?

谢谢

java listview listadapter android-arrayadapter

16
推荐指数
1
解决办法
3万
查看次数

android ArrayAdapter项目更新

我有这个项目结构的ArrayAdapter:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout ... >

         <TextView
             android:id="@+id/itemTextView"
             ... />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

并添加此适配器,以便:

mAdapter = new ArrayAdapter<String>(this, R.layout.item, 
                                            R.id.itemTextView, itemsText);
Run Code Online (Sandbox Code Playgroud)

一切都很好,但我想更新适配器项目中的文本.我找到了解决方案

mAdapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)

但不明白如何使用它.请帮忙.

UPD 我的代码:

String[] itemsText = {"123", "345", "567"};
ArrayAdapter<String> mAdapter;
Run Code Online (Sandbox Code Playgroud)

的onCreate

mAdapter = new ArrayAdapter<String>(this, R.layout.roomitem, 
                                              R.id.itemTextView, itemsText);
setListAdapter(mAdapter);
itemsText = {"789", "910", "1011"};
Run Code Online (Sandbox Code Playgroud)

的onClick

mAdapter.notifyDataSetChanged();
//it's dont work
Run Code Online (Sandbox Code Playgroud)

android android-arrayadapter

16
推荐指数
3
解决办法
7万
查看次数

ArrayAdapter.NotifyDataSetChanged()不起作用?

我有一个可以由用户更新的列表,但是notifyDataSetChanged()没有与该关联的适配器一起工作listView.我在一个片段中使用它.数据库会更新,但adpater不会.以下是我的实施:

我的主要信息:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    myArrayList = new ArrayList<myList>();
    myArrayList = Database.getSharedObject(getActivity()).getMyList();
    if (myArrayList != null && myArrayList.size() > 0) {
        adapter = new myListAdapter(getActivity(), 0, myArrayList);
    }

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.mainfragment, container, false);
    myListView = (ListView) v.findViewById(R.id.my_list_view);
    myListView.setOnItemClickListener(this);
    if (adapter != null) {
        myListView.setAdapter(adapter);
    }

    return v;
}
Run Code Online (Sandbox Code Playgroud)

在一些导航过程之后,List得到了更新,在我的onResume()方法中,我从数据库中获取了更新的List,并且调用notifyDatasetChanged()了不更新视图的方法,但是更新了DB中相应的数组.

@Override
public void onResume() {
    super.onResume();
    myArrayList = …
Run Code Online (Sandbox Code Playgroud)

android listview android-arrayadapter

16
推荐指数
3
解决办法
4万
查看次数

如何在android的ArrayAdapter中覆盖过滤器?

我有一个ArrayAdapter包裹自定义对象的ArrayList.我想为该适配器编写一个自定义过滤器,这样当我调用getListAdapter().getFilter().filter("abc")列表时,将通过"abc"的任意转换过滤.

我想我会尝试覆盖ArrayAdapter.getFilter(),但这需要我重新实现私有ArrayAdapter.ArrayFilter,这需要访问一堆ArrayAdapter的私有实例.

最简单的方法是什么?

android filter android-arrayadapter

15
推荐指数
1
解决办法
5212
查看次数

R.layout和android.R.layout之间的区别

有什么区别

   setContentView(R.layout.main);
Run Code Online (Sandbox Code Playgroud)

ArrayAdapter arrayAdapter = new ArrayAdapter(this,
                android.R.layout.simple_spinner_dropdown_item, sarray);
Run Code Online (Sandbox Code Playgroud)

R.layout和之间有什么区别android.R.layout

layout android android-arrayadapter

15
推荐指数
2
解决办法
4057
查看次数

没有调用ArrayAdapter的getView()方法

我是android开发的新手.我正在尝试构建一个带有标签的应用程序(通过片段添加).在其中一个片段中,我试图显示一个列表.这个列表已经使用我从ArrayAdapter扩展的ListAdapter填充,并且我重载了getView()方法.这是我的片段

public class tabcontentActivity extends Fragment {

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        if (container == null) {
            return null;
        }
        View v = (LinearLayout) inflater.inflate(R.layout.tablayout, container,
            false);
        ListView lv = (ListView) v.findViewById(R.id.listview1);
        ListViewAdapter adapter = new ListViewAdapter(container.getContext(),
            android.R.layout.simple_list_item_1, R.id.textview1);
        adapter.notifyDataSetChanged();
        lv.setAdapter(adapter);

        return v;
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我实现ListAdapter的方法

public class ListViewAdapter extends ArrayAdapter {
    Context context1;

    public ListViewAdapter(Context context,int resource, int textViewResourceId) {
        super(context,resource,textViewResourceId);
        this.context1 = context;
        System.out.println("here aswell!!!!!!");
        // TODO Auto-generated constructor stub
    }

    public View getView(int …
Run Code Online (Sandbox Code Playgroud)

android android-arrayadapter android-layout android-fragments

15
推荐指数
3
解决办法
3万
查看次数

listview没有使用notifydatasetchanged()调用进行更新

这是我的代码

listview =(ListView) findViewById(R.id.lv1);


    ArrayList<SClass> Monday = new ArrayList<SClass>();

    SClass s1=new SClass();
    s1.sName="samp";
    s1.salary=1000;
    Monday.add(s1);
    temp=Monday;
    adapter = new CustomAdap(this, temp);
    listview.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常.但是当我将代码更改为此时

    listview =(ListView) findViewById(R.id.lv1);


    adapter = new CustomAdap(this, temp);

    SClass s1=new SClass();
    s1.sName="samp";
    s1.salary=1000;
    Monday.add(s1);
    temp=Monday;

    listview.setAdapter(adapter);
    adapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)

Listview没有显示任何内容.问题是什么?

android listview android-arrayadapter

15
推荐指数
2
解决办法
3万
查看次数

使用GUID或字符串作为ID的hasStableIds适配器

我正在实现一个自定义ArrayAdapter<T>,我想将其设置hasStableIds为true.但我的T项的ID是字符串,getItemId方法返回long.

所以,我目前正在做的是:

@Override
public boolean hasStableIds() {
    return true;
}

@Override
public long getItemId(int position) {
    return this.getItem(position).getId().hashCode();
}
Run Code Online (Sandbox Code Playgroud)

getId()返回一个字符串.

这是使用String ID的正确解决方案吗?
特别是,对于这种情况,String Ids是GUID,有更好的选择吗?

android listview android-arrayadapter baseadapter

15
推荐指数
1
解决办法
1145
查看次数

使用数组列表的Android Spinner数据绑定

我有一个像这样的数组列表:

private ArrayList<Locations> Artist_Result = new ArrayList<Location>();
Run Code Online (Sandbox Code Playgroud)

此Location类有两个属性:idlocation.

我需要将我绑定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)

但是,它显示对象的十六进制值.所以我想我必须设置显示该微调控制器的文本和值.

data-binding android arraylist spinner android-arrayadapter

14
推荐指数
3
解决办法
5万
查看次数

在牛轧糖上的黑暗背景上的黑色文本(android.R.layout.simple_spinner_item)

我在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.此时,没有其他更改,微调器下拉列表的文本变得不可读:

在黑暗的背景机器人7的黑文本

我的主题的父级是"Theme.AppCompat.Light.NoActionBar",但同样,我没有玩那里的颜色,因为它显示正确(API <25)没有任何改变.任何的想法?

我知道我可以用一些setTextColor()内部修复它spinner.setOnItemSelectedListener(),但主要的一点是理解为什么它工作,现在它没有,因为这可能是我身边某些概念错误的标志,甚至某种Android bug.事实上,我注意到相同的问题(深色背景上的黑色文本)在非常标准的小部件/应用程序上,如Cyanogen/LineageOS默认天气一:

在黑暗的背景机器人7的黑文本

android android-arrayadapter android-spinner

14
推荐指数
1
解决办法
589
查看次数