标签: 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:notifyDataSetChanged()在方向更改后不更新listview

我有一个半复杂的问题,希望有人能够帮助我.

在单击事件上,我创建一个线程并基于此方法启动长时间运行的操作.在长时间运行的任务完成后,它会回调到另一种方法,它不后的处理程序:

@Override
public void contentSearchModelChanged(Model_ContentSearch csm, ArrayList<Class_Reminder> newRemindersList) {
    remindersList = newRemindersList;
    mHandler.post(mUpdateDisplayRunnable);
}
Run Code Online (Sandbox Code Playgroud)

哪个叫Runnable:

// post this to the Handler when the background thread completes
private final Runnable mUpdateDisplayRunnable = new Runnable() {
  public void run() {
    updateDisplay();
  }
};
Run Code Online (Sandbox Code Playgroud)

最后,这是我的updateDisplay()方法正在做的事情:

private void updateDisplay() {
    if (csModel.getState() != Model_ContentSearch.State.RUNNING) {
        if(remindersList != null && remindersList.size() > 0){
                r_adapter = new ReminderAdapater(Activity_ContentSearch.this, remindersList, thisListView);
                thisListView.setAdapter(r_adapter);
                r_adapter.notifyDataSetChanged();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我正常地这样做时,这很好用.不过,如果我更改方向的长时间运行的操作运行时,这是行不通的.它确实使回调正确,并且remindersList确实包含项目.但是当它达到这条线时:

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

什么都没发生.奇怪的是,如果我做的另一项提交并使其再次运行全过程(不改变方向),它实际上更新视图两次,一次为前下一个提交又一次.所以一旦与第一结果视图更新提交,然后再次与第二提交第二次以后的结果.因此,适配器DID获取数据,它只是不刷新视图.

我知道这与方向改变有关,但我不能为我的生活找出原因.有人可以帮忙吗?或者,任何人都可以建议一种处理方向更改线程的替代方法吗?

巴拉

multithreading android listview orientation android-arrayadapter

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

Listview的ArrayAdapter notifydatasetchanged()非常慢的重绘

我有一个非常简单的列表,每行有3个textview字段.我们使用来自后台webservice调用(AsyncTask)的数据每2秒左右更新一次它们的值

我们将即将到来的值与当前值进行比较,在Adapter上相应地更新它们,最后如果需要调用notifyDataSetChanged()

问题是,当我们一次获得超过3个更新行时,重绘变得非常慢,从而挂起整个UI.当然,我们使用所有ListView众所周知的优化,例如EfficientAdapter方法(setTag()和holder),以及getViewTypecount()/ getItemViewType().我们还尝试使用layoutopt尽可能地优化我们的界面,并尝试避免wrap_content宽度和高度来减轻负担.

我们不会对我们的更新执行昂贵的操作,只是标准的东西:更改TextView文本,textcolor和backgroundcolor值.

我能看到的唯一奇怪的事情就是每行调用getView()3-4-5次,虽然我已经阅读了所有那些Romain的消息[1],告诉他们没有错

关于如何加快速度的任何想法或提示?

非常感谢你!

[1] http://groups.google.com/group/android-developers/browse_thread/thread/4c4aedde22fe4594/aeb04288064f495e?show_docid=aeb04288064f495e

performance android listview redraw android-arrayadapter

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

数组适配器notifyDataSetChanged()将不起作用

我在这个上浪费了太多时间,所以不得不再问一次.我不知道为什么会发生这种情况.

我有一个数组适配器(aAdapter)和一个数组列表(aList),我试图用一个清除按钮来清除数据库中的条目并清除列表.

我的问题是NotifyDataSetChanged()只是在我的onlick方法中不起作用:

public void clearDB(View view) {
    aList.clear();
    aAdapter.notifyDataSetChanged();
    HighScoresDB hsdb = new HighScoresDB(HighScoresActivity.this);
    hsdb.openDB();
    hsdb.clearDB();
    hsdb.closeDB();

}
Run Code Online (Sandbox Code Playgroud)

它适用于其他任何地方.我甚至尝试将clear和notifyDataSetChanged()放在另一个方法中并调用它但是这也不起作用但是当我从onCreate调用它时它确实有效....

有任何想法吗?

ps正在清除数据库.

android android-arrayadapter android-listview

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

带有自定义适配器和列表视图的onItemClickListener

我正在尝试使用自定义适配器和listview设置来设置onItemClickListener.似乎无法让听众工作.我认为我没有正确设置它.任何帮助表示赞赏.非常感谢.

适配器:

public class ModuleAdapter extends ArrayAdapter<Module> {

Context context;
int layoutResourceId;
Module data[];

public ModuleAdapter(Context context, int layoutResourceId,
        Module data[]) {
    super(context, layoutResourceId, data);
    this.layoutResourceId = layoutResourceId;
    this.context = context;
    this.data = data;
}

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

    if(row == null)
    {
        LayoutInflater inflater = ((Activity)context).getLayoutInflater();
        row = inflater.inflate(layoutResourceId, parent, false);

        holder = new ModuleHolder();
        holder.modJapTitle = (TextView)row.findViewById(R.id.moduleJapTitle);
        holder.modEngTitle = (TextView)row.findViewById(R.id.moduleEngTitle);
        holder.modComp = (TextView)row.findViewById(R.id.moduleCompletion);
        holder.modRating …
Run Code Online (Sandbox Code Playgroud)

android listview android-arrayadapter onitemclicklistener

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

为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万
查看次数

适配器上的Android重叠文本

在某些手机上,主要是Galaxy S2,我遇到的问题是自定义适配器的结果相互重叠.这是用户在搜索字段中搜索单词"阴道"的示例,它是医疗应用程序.

我不确定描述这个的最好方法,而且代码在这一点上非常复杂.用户键入单词,数据库结果显示匹配.这些结果位于List对象中并通过适配器显示.在大多数手机上,这可以按预期工作,结果是连续的.在至少一个设备上,上面的屏幕截图发生了.

这是一个已知错误,我该如何解决?

android adapter autocompletetextview android-arrayadapter

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

如何在onSaveInstanceState()中存储值并进行检索?

我试图存储一个arraylist onSavedInstanceState()的值并在onCreate方法中获取数组列表中的值,但它引发了一个像无法暂停活动的爱

这是我的代码

public void onSaveInstanceState(Bundle savedInstanceState) {
    savedInstanceState.putParcelable("Old", (Parcelable) profileDetails );
    super.onSaveInstanceState(savedInstanceState);
}
Run Code Online (Sandbox Code Playgroud)

在我的 onCreate()

if (savedInstanceState != null) { 
    profileDetails= (ArrayList<ProfileDetails>)savedInstanceState.getParcelable("Old");
}
else {
    profileDetails = GetSearchResults();
}
Run Code Online (Sandbox Code Playgroud)

android android-arrayadapter

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

Android - android.content.res.Resources $ NotFoundException:资源ID#0x0

我正在尝试编写一个能够浏览手机上文件的Android应用程序.当我在模拟器上运行应用程序时,出现以下错误:

02-18 22:14:17.839: E/AndroidRuntime(896): FATAL EXCEPTION: main
02-18 22:14:17.839: E/AndroidRuntime(896):     android.content.res.Resources$NotFoundException: Resource ID #0x0
02-18 22:14:17.839: E/AndroidRuntime(896):  at android.content.res.Resources.getValue(Resources.java:1018)
02-18 22:14:17.839: E/AndroidRuntime(896):  at android.content.res.Resources.getDrawable(Resources.java:663)
02-18 22:14:17.839: E/AndroidRuntime(896):  at com.example.App.FileArrayAdapter.getView(FileArrayAdapter.java:56)
02-18 22:14:17.839: E/AndroidRuntime(896):  at android.widget.AbsListView.obtainView(AbsListView.java:2033)
02-18 22:14:17.839: E/AndroidRuntime(896):  at android.widget.ListView.makeAndAddView(ListView.java:1772)
02-18 22:14:17.839: E/AndroidRuntime(896):  at android.widget.ListView.fillDown(ListView.java:672)
02-18 22:14:17.839: E/AndroidRuntime(896):  at android.widget.ListView.fillFromTop(ListView.java:732)
02-18 22:14:17.839: E/AndroidRuntime(896):  at android.widget.ListView.layoutChildren(ListView.java:1625)
02-18 22:14:17.839: E/AndroidRuntime(896):  at android.widget.AbsListView.onLayout(AbsListView.java:1863)
02-18 22:14:17.839: E/AndroidRuntime(896):  at android.view.View.layout(View.java:11278)
02-18 22:14:17.839: E/AndroidRuntime(896):  at android.view.ViewGroup.layout(ViewGroup.java:4224)
02-18 22:14:17.839: E/AndroidRuntime(896):  at android.widget.FrameLayout.onLayout(FrameLayout.java:431)
02-18 22:14:17.839: E/AndroidRuntime(896):  at android.view.View.layout(View.java:11278)
02-18 …
Run Code Online (Sandbox Code Playgroud)

resources android exception android-arrayadapter

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

为Custom ListView的每个项添加一个下拉菜单

我有一个完美的自定义列表视图.现在,我希望列表中的每个项目都有一个下拉菜单,这样当用户点击列表中的任何项目时,下拉菜单会显示两个选项 - 编辑和删除.根据用户的选择,列表视图项被处理.

我想知道将下拉菜单添加到每个listview项的方法.

列表项的xml文件 -

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="120dp"
android:background="#FFFFFF">
<CheckBox
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:id="@+id/chkitem"
    android:layout_alignParentLeft="true"
   />
<TextView android:id="@+id/textTitle"
    android:layout_width="200dp"
    android:layout_height="60dp"
    android:textSize="15dp"
    android:textColor="#000000"
    android:textStyle="bold"
    android:gravity="fill"
    android:layout_toRightOf="@+id/chkitem"
    />
<TextView
    android:layout_width="200dp"
    android:layout_height="60dp"
    android:id="@+id/detail"
    android:textSize="15dp"
    android:textStyle="italic"
    android:gravity="fill"
    android:layout_toRightOf="@+id/chkitem"
    android:layout_below="@+id/textTitle"/>
    </RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

适配器类

 public class list_addr_adapter extends ArrayAdapter<list_addr> {

Context context;
int layoutResourceId;



public list_addr_adapter(Context context, int layoutResourceId,          List<list_addr> items) {
    super(context, layoutResourceId, items);
    this.layoutResourceId = layoutResourceId;
    this.context = context;
    //  this.listener=callback;
}

/*private view holder class*/
private class ViewHolder { …
Run Code Online (Sandbox Code Playgroud)

android listview android-custom-view android-arrayadapter drop-down-menu

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