标签: android-arrayadapter

更新MergeAdapter/SectionedAdapter

我正在尝试制作一个LazyList EndlessList但是使用一个分段适配器......这些部分将是将从Internet下载的项目页面.

我试图使用MergeAdapter或不推荐使用的SectionedAdapter(Mark Murphy)来实现它的基本要点.但是我面临着两个问题.

1)使用SectionedAdapter,它加载第一页正常,但在第二页上我遇到了这个例外.

Uncaught handler: thread main exiting due to uncaught exception
java.lang.ArrayIndexOutOfBoundsException
at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:3572)
at android.widget.AbsListView.trackMotionScroll(AbsListView.java:2487)
at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:2353)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4363)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

经过几个小时的研究,我意识到这与错误的getViewTypeCount()价值有关.但我不知道如何正确实现它.

2)然后我尝试使用MergeAdapter,但这简直使情况变得更糟,甚至部分也以随机间隔出现.

我写了一个小示例程序,只是为了显示我的实现.

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;

import android.app.ListActivity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class LazySectionListActivity extends ListActivity implements
        OnScrollListener …
Run Code Online (Sandbox Code Playgroud)

android android-arrayadapter commonsware-cwac

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

如何设置onItemClick的行ID

我有onItemClick监听器,我想使用id值.但它与位置具有相同的价值.

public void onItemClick(AdapterView<?> a, View view, int position, long id) {
    DBh.something(id);
}
Run Code Online (Sandbox Code Playgroud)

我使用自定义ArrayAdapter类似于那个: onItemClickListener与自定义适配器和列表视图

我试图使用row.setId()但其int不长.

android android-arrayadapter onitemclicklistener

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

更改ArrayAdapter的值

如果选择了第一个元素,我想更新ArrayAdapter的值:

public ArrayAdapter<String> adapter;
String[] categoriesArray;    
...

adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, categoriesArray);
list.setAdapter(adapter);

list.setOnItemClickListener(new OnItemClickListener(){
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        if(arg2== Consts.GAME_CATEGORY_POSITION){

            adapter.clear();

            //Add new values to array
            categoriesArray = new String[subCategories.size()];
            for (int i=0; i<subCategories.size(); i++) {
                categoriesArray[i] = subCategories.get(i).getSub_name();                    
            }           
            adapter.notifyDataSetChanged();             
        }           
    }           
});
Run Code Online (Sandbox Code Playgroud)

但是clear方法(适配器)触发了异常

12-27 09:37:57.376: E/AndroidRuntime(1423): java.lang.UnsupportedOperationException
12-27 09:37:57.376: E/AndroidRuntime(1423):     at java.util.AbstractList.remove(AbstractList.java:638)
12-27 09:37:57.376: E/AndroidRuntime(1423):     at java.util.AbstractList$SimpleListIterator.remove(AbstractList.java:75)
12-27 09:37:57.376: E/AndroidRuntime(1423):     at java.util.AbstractList.removeRange(AbstractList.java:658)
12-27 09:37:57.376: E/AndroidRuntime(1423):     at java.util.AbstractList.clear(AbstractList.java:466)
12-27 …
Run Code Online (Sandbox Code Playgroud)

android android-arrayadapter

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

AutoCompleteTextView无法响应其ArrayAdapter的更改

ArrayList似乎是填充就好了,但是不管我用什么方法,我似乎无法获取适配器来填充数据.我已经尝试过添加到了ArrayList,也是为了ArrayAdapter.无论哪种方式,我都无法在AutoCompleteTextView关卡或ArrayAdapter自身中得到回应(当然AutoCompleteTextView也无所作为).有人能看出什么问题吗?

public class MainActivity extends Activity implements TextWatcher {
// private AutoCompleteView autoComplete; 
public String TAG = new String("MAINACTIVITY");
public ArrayAdapter<String> autoCompleteAdapter;
public AutoCompleteTextView autoComplete;
public InputStream inputStream;
public List<String> data;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    data = new ArrayList<String>();
    autoCompleteAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line, data);
    autoCompleteAdapter.setNotifyOnChange(true);
    autoComplete = (AutoCompleteTextView) findViewById(R.id.acsayt);
    autoComplete.setHint(R.string.search_hint);
    autoComplete.setThreshold(2);
    autoComplete.addTextChangedListener(this);
    autoComplete.setAdapter(autoCompleteAdapter);
}

// …
Run Code Online (Sandbox Code Playgroud)

java android filtering autocompletetextview android-arrayadapter

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

Android Listview添加相同的项目

我正在开发一个Android应用程序,我正在使用Android ListView.我从Web服务获取数据并将其填入Arraylist.它的大小是37.然后我尝试用Arraylist填充listview,但它总是得到相同的元素(最后一个).您可以在下面看到代码部分:

private void ctv_listele(String res){
ArrayList<CTV> ctvList = new ArrayList<CTV>();

try {
    JSONObject jsonObject = new JSONObject(res);
    JSONArray jsonArray = jsonObject.getJSONArray("tarife");
    int max = jsonArray.length();
    for(int i = 0; i < max; i++) {
        JSONObject tmp = jsonArray.getJSONObject(i);
        ctv.setYear(tmp.getString("Year"));
        ctv.setYearlyCost(tmp.getString("YearlyCost"));
        ctv.setMonthlyCost(tmp.getString("MonthlyCost"));
        ctv.setGroup(tmp.getString("Group"));
        ctv.setDegree(tmp.getString("Degree"));
        Log.e("Added",tmp.getString("YearlyCost"));
        ctvList.add(ctv);
    }
    Log.e("End",String.valueOf(ctvList.size()));
} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
  ListView productList = (ListView) findViewById(R.id.listView_ctv);
  MyCustomAdapter adapter = new MyCustomAdapter(this, R.layout.ctv_row, ctvList);
  productList.setAdapter(adapter);

}


public class MyCustomAdapter extends ArrayAdapter<CTV>{

private …
Run Code Online (Sandbox Code Playgroud)

android android-arrayadapter android-listview

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

Android - 如何过滤多个值的列表视图?

我想过滤歌曲标题和艺术家的listView.

目前我有一个关于歌曲标题的工作过滤器.但我无法弄清楚如何在同一时刻过滤歌曲标题和艺术家.

这是我的活动:

listView.setTextFilterEnabled(true);
inputSongTitle.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
        adapterCorrectSong.getFilter().filter(cs);
    }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                                  int arg3) {
    }

    @Override
    public void afterTextChanged(Editable s) {
    }
});
Run Code Online (Sandbox Code Playgroud)

我在ArrayAdapter中使用此代码:

@Override
public Filter getFilter() {
    if (songFilter == null){
        songFilter  = new SongFilter();
    }
    return songFilter;
}

private class SongFilter extends Filter
{
    @Override
    protected FilterResults performFiltering(CharSequence constraint) {

        constraint = constraint.toString().toLowerCase();
        FilterResults result = new FilterResults(); …
Run Code Online (Sandbox Code Playgroud)

android filter android-arrayadapter android-listview

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

将ArrayAdapter转换为List <String>

我有一个数组适配器(字符串),并希望将其转换为a List<String>,但经过一些谷歌搜索和一些尝试后,我不知道如何做到这一点.

我试过以下几点;

for(int i = 0; i < adapter./*what?*/; i++){
     //get each item and add it to the list
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为似乎没有adapter.lengthadapter.size()方法或变量.

然后我尝试了这种类型的for循环

for (String s: adapter){
    //add s to the list
}
Run Code Online (Sandbox Code Playgroud)

但是适配器不能在foreach循环中使用.

然后我做了一些谷歌搜索方法(在数组中)从适配器转换为列表,但没有找到任何东西.

做这个的最好方式是什么?它甚至可能吗?

android arraylist android-arrayadapter

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

Android:如何从strings.xml获取值到listview?

在我的Android应用程序中,我想列出可以单击的选项.在您单击的任何项目上,它总是会将您带到相同的下一个屏幕,但使用不同的.putextra().我可以使用简单的ListAdapter 来完成此操作.

这很好,但我确实希望在应用程序中为不同语言翻译这些值.我想这意味着我需要在strings.xml中定义listview中的所有值.我当然可以在strings.xml中定义一些值,但我不知道从哪里开始从strings.xml获取值到listview中.

有谁知道我怎么能将可翻译的值变成Android ListView?欢迎任何提示!

xml android listview android-arrayadapter android-listview

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

从自定义ArrayAdapter内部关闭对话框

我有一个自定义对话框片段,里面有一个自定义ArrayAdapter.每个列表项都有3个按钮.点击每个按钮,我有OnClickListener()一个功能.功能完成后,我需要关闭对话框.因为这是在ArrayAdapter中完成的,所以我无法dismiss()在对话框片段中调用.我尝试OnClickListener()在对话框片段中设置一个按钮,但是我得到一个空指针.

我无法弄清楚如何从自定义arrayAdapter中获取对话框片段的引用.onclick事件必须在ArrayAdapter内部发生,因为它使用特定于该列表项的信息.任何帮助将不胜感激.谢谢.

DialogFragment:

public class SavedArmyDialog extends DialogFragment {
View mView;

public static SavedArmyDialog newInstance() {
    SavedArmyDialog fragment = new SavedArmyDialog();
    return fragment;
}

public SavedArmyDialog() {
    // Required empty public constructor
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    mView =  inflater.inflate(R.layout.custom_army_list, container, false);

    CustomArmyObjData customArmyObjData = new CustomArmyObjData();
    ArrayList<CustomArmy> customArmyArray = customArmyObjData.getCustomArmyArray(getActivity());

    CustomArmyAdapter adapter …
Run Code Online (Sandbox Code Playgroud)

android dialog android-arrayadapter

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

什么是ArrayAdapter?

我真的没有看到ArrayAdapter和ArrayList之间的差异......他们都持有数组,并对它们进行不同类型的操作..它要么是我还是不正确理解ArrayAdapter?请帮忙!谢谢.

java android arraylist android-arrayadapter

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