标签: android-arrayadapter

如何创建仅包含某些可扩展项目的列表?

我正在尝试编写一个列表,其中包含一些可扩展的项目和一些单项.我希望这样,当单击一个项目或可扩展列表子项时,我可以根据项目的文本调用intent.

我认为可扩展列表可以工作,但有没有办法在可扩展列表中设置项目,以便它们没有可扩展列表图标?我应该使用字符串数组以外的东西吗?

做这个的最好方式是什么?

谢谢

下面是我不完整的代码,我想在"亚特兰大"和"波士顿"之间插入项目"区域1","区域2","区域3"或作为亚特兰大的子集:

package test.lists.special;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class SpecialList extends ListActivity{
TextView toptext;
String[] items={"Atlanta", "Boston", "Chicago", "Dallas"};

@Override

 public void onCreate(Bundle icicle) {
  super.onCreate(icicle);
  setContentView(R.layout.main);
  setListAdapter(new ArrayAdapter<String>(this,
  android.R.layout.simple_list_item_1,
  items));
  toptext=(TextView)findViewById(R.id.toptext);
 }

public void onListItemClick(ListView parent, View v, int position,
 long id) {
     Intent intent = new Intent();

     if (parent.getItemAtPosition(position)=="Atlanta")
     {
           //THIS IS WHERE I WISH TO INSERT "ZONE 1", "ZONE 2", "ZONE …
Run Code Online (Sandbox Code Playgroud)

android list expandablelistview android-arrayadapter

6
推荐指数
2
解决办法
3523
查看次数

为Android排序ArrayAdapter

我有一个MultiAutoCompleteTextView,它允许您输入多个条目并显示自动填充建议.我提交数据时出现问题.我将任何输入的字符串添加到下拉列表中,但我尝试对数据进行排序失败.在提交时执行的代码:

final private Comparator<String> comp = new Comparator<String>() {
    public int compare(String e1, String e2) {
        return e1.toString().compareTo(e2.toString());
    }
};

((ArrayAdapter<String>) autoCompleteView.getAdapter()).add(getString());                    
((ArrayAdapter<String>) autoCompleteView.getAdapter()).sort(comp);  
Run Code Online (Sandbox Code Playgroud)

单击autoCompleteView时发生的代码:

        view.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                adapter.getFilter().filter(null);
                //adapter.sort(comp);
                view.showDropDown();
            }
        });
Run Code Online (Sandbox Code Playgroud)

任何人都可以发现我正在做的事情有什么问题吗?

编辑:在收集@Sam的更改后的更多信息

private ArrayList<String> array = new ArrayList<String>();
private ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,
        array);

private void setUpAutoComplete(final MultiAutoCompleteTextView view)
{
    array.add("test string");   // this is successfully added to the drop down list
    Collections.sort(array, comp);
    adapter.notifyDataSetChanged();
}

private void onSubmit()
{ …
Run Code Online (Sandbox Code Playgroud)

sorting android android-arrayadapter drop-down-menu

6
推荐指数
1
解决办法
2万
查看次数

我怎样才能在ListView中添加不同的颜色

我想在列表视图的每一行中获得不同的颜色

但目前只显示一种颜色

那我怎么能这样做呢

ArrayAdapter<String> adapter=new ArrayAdapter<String(this,R.layout.latesthappenings,R.id.LH_Titles,titles);
            setListAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

我想在每一行中使用不同的颜色

请告诉我该怎么办

谢谢

android row android-arrayadapter

5
推荐指数
1
解决办法
2662
查看次数

如何在单独的类中使用自定义ArrayAdapter?

我有一个扩展ArrayAdapter的内部类,以便自定义ListView.我想将这个内部类分解为一个单独的文件,以便其他类可以使用它,但在getLayoutInflater()时遇到一些问题.

基本上,我的getView()方法不知道getLayoutInflater()是什么,即使我正在扩展ArrayAdapter.任何人都知道如何正常工作?

谢谢!

public class myDynAdap extends ArrayAdapter<String>
{
    String [] list;


   public myDynAdap (Context context, int textViewResourceId, String [] objects)
   {
       super (context, textViewResourceId, objects);
       mCtx = context;
       list = objects;
   }

    @Override
    public View getView (int position, View convertView, ViewGroup parent)
    {
        View row = convertView;

        if (row == null)
        {

            LayoutInflater inflater = getLayoutInflater ();  // <--- "The method getLayoutInflater() is undefined for the type myDynAdap"
            row = inflater.inflate (R.layout.main_listitem, parent, false);
        }

        TextView tv1 = (TextView) …
Run Code Online (Sandbox Code Playgroud)

android android-arrayadapter

5
推荐指数
2
解决办法
1万
查看次数

过滤后,Android Custom ArrayAdapter不会刷新

所以我有一个自定义,ArrayAdapter所以我可以使用可用的标题/副标题视图ListView.我有一个EditText接受字符串并过滤适配器.

过滤器工作的意义在于它正在过滤正确的对象(我可以通过点击它来判断它并使用正确的"额外"来启动意图.)

但是,即使过滤工作,适配器中的项目也不会更新以显示正确的信息...标题和副标题不正确.

让我们说我们有0到9的项目ListView,我过滤到3项搜索,并说让过滤的项目显示5,6,9 ... 3项,但它的前3项目的原- 搜索ListView(0-2).如果我单击项目2(第三项),则9的内容包含在新意图中.这对于搜索条件是正确的,但标题确实反映了正确的信息.

我不确定我需要告诉ListView刷新什么.我不认为它notifyDataSetChanged();

任何帮助表示赞赏.谢谢!

    public class myListAdapter extends ArrayAdapter<Pizza>{
    private ArrayList<Pizza> items;
    private PizzaViewHolder myListHolder;

    private class PizzaViewHolder{
        TextView title;
        TextView subtitle;
    }

    public myListAdapter(Context context, int textViewResourceId, ArrayList<Pizza> items) {
        super(context, textViewResourceId, items);
        this.items = items;
        // TODO Auto-generated constructor stub
    }

    @Override
    public View getView(int pos, View convertView, ViewGroup parent){
        View v = convertView;
        if(v == null){
            LayoutInflater vi = …
Run Code Online (Sandbox Code Playgroud)

android android-arrayadapter

5
推荐指数
1
解决办法
5686
查看次数

在另一个Activity中更新后刷新ListView

我有两个简单的活动 - 活动1:来自Array Activity2的ListView:EditText,用于编辑Activity1中单击的行

当我在Activity2中编辑值并返回到Activity1时,ListView不会重新加载新值.

我想从Activity2返回或恢复Activity1或更新列表的东西时刷新ListView.

我的代码:

static ArrayAdapter<String> dataAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
            // Loading the values to list array
        String[][] fulllist = loadArrays();
        String[] list = new String[fulllist.length];
        for(int i = 0; i<fulllist.length; i++) {
            list[i] =  fulllist[i][1];
            }
            // --------------------------------

            dataAdapter = new ArrayAdapter<String>(this,
                                android.R.layout.simple_list_item_1,
                                list);
            setListAdapter(dataAdapter);
            }
@Override
public void onResume() {
        super.onResume();
        // Loading the values to list array
        String[][] fulllist = loadArrays();
        String[] list = new String[fulllist.length];
        for(int i = 0; …
Run Code Online (Sandbox Code Playgroud)

android listview android-arrayadapter

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

Android:ListView告诉我它已填充但不显示项目

所以我用谷歌搜索,并搜索SO以寻找我认为可能是一个荒谬的疏忽的答案,但是这里有.

我有一个ListView,我正在填充一个ArrayAdapter我正在我的应用程序中的其他地方使用的对象列表.我已经检查getCount过,在我调用之前和之后,适配器中都有项目.setAdapter().但是,我的应用程序中没有任何内容出现.

我的主要布局res/layout/playlistview:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/playlist_screen"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#80000000"
android:gravity="center"
android:orientation="horizontal" >

<ListView
    android:id="@+id/playlistview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:divider="#206"
    android:background="#602" >

</ListView>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

(我设置了颜色,这样我就可以更容易地看到发生了什么)

textview每个项目res/layout/singlelistitem:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/single_item"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="16sp"
    android:padding="5dp" 
    android:background="#206">
</TextView>
Run Code Online (Sandbox Code Playgroud)

和我用来填充它的代码:

private ListView playlistView;

private void buildPlaylistView() {
playlistView = (ListView)findViewById(R.id.playlistview);

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.singlelistitem, R.id.single_item, playlist.titlesAsArray());

playlistView.setAdapter(adapter);

playlistView.setVisibility(View.VISIBLE);

adapter.notifyDataSetChanged();
((ArrayAdapter<String>)playlistView.getAdapter()).notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)

playlist.titlesAsArray()确实返回String[]并且有效.

我有两个.notifyDataSetChanged() …

java android listview visibility android-arrayadapter

5
推荐指数
0
解决办法
5573
查看次数

listview.setOnItemClickListener和row.setOnClickListener的区别

我正在创建一个自定义数组适配器,我现在想要实现一个处理单击视图的函数.我有两个选择,但我想知道性能/工作速度是否存在差异?

选项1,在arrayAdapter中:

row.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub


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

选项2,来自主要活动:

listView.setAdapter(adapter);
        listView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                // TODO Auto-generated method stub

            }


        });
Run Code Online (Sandbox Code Playgroud)

还是他们完全一样?

android listview onclick android-arrayadapter

5
推荐指数
1
解决办法
2107
查看次数

自定义适配器未在ListView上显示任何数据

我的listView需要一个自定义适配器.它需要传递给ASyncTask,它将从RSS提要中获取一些数据,然后希望将该数据(当前标题和日期,两个字符串)设置为该行.

我提出的代码如下,但它没有对适配器做任何事情.

MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;


public class MainActivity extends Activity
{
    private ListView listOne;
    private ListView listTwo;
    RssListViewAdapter adapterOne;
    RssListViewAdapter adapterTwo;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.rss_layout);

        //Connect all three columns to their ListViews
        listOne = (ListView) findViewById(R.id.listOne);
        listTwo = (ListView) findViewById(R.id.listTwo);

        //Create both adapaters
        //TODO: Make custom adapater
        adapterOne = new RssListViewAdapter(this);
        adapterTwo = new RssListViewAdapter(this);


        //Class once for each column. Pass feed URL and Adapter.
        new GetRssFeed("http://feeds.arstechnica.com/arstechnica/index", adapterOne, listOne).execute();
        new …
Run Code Online (Sandbox Code Playgroud)

java android listview android-arrayadapter custom-adapter

5
推荐指数
1
解决办法
759
查看次数

从Activity AlertDialog添加到Fragment ArrayAdapter

我正在学习Android Studio中的原型,我遇到了一个障碍,我似乎无法找到任何答案.

我有一个Activity,它将自定义ArrayAdapter显示为ListView.我可以通过单击它们并输入生成的AlertDialog来编辑ListView中的项目.还有一个我可以按下的添加按钮,它会显示一个类似的AlertDialog,但是当我点击保存时,没有任何内容被添加到ListView中.如何将AlertDialog文本输入保存为新的ArrayAdapter项?

我发现的大多数例子都直接在Activity中实例化了ArrayAdapter,而不是像我做的那样通过Fragment实例化.

MainActivity.java

public class MainActivity extends AppCompatActivity {

private static final String TAG = "MainActivity";

@Override
protected void onCreate(Bundle savedInstanceState) { //initialize the activity
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); //establish where the layout will come from
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); //creates a toolbar
    setSupportActionBar(toolbar);

    if (findViewById(R.id.fragment_container) != null) {
        if (savedInstanceState != null) {
            return;
        }
        //creates the first fragment dynamically, so it can be replaced
        Fragment firstFragment = new MainActivityFragment();
        firstFragment.setArguments(getIntent().getExtras());
        getSupportFragmentManager().beginTransaction()
                .add(R.id.fragment_container, firstFragment).commit();
    }

    //This creates the …
Run Code Online (Sandbox Code Playgroud)

java android android-arrayadapter android-fragments

5
推荐指数
1
解决办法
159
查看次数