我正在尝试制作一个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) 我有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不长.
如果选择了第一个元素,我想更新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) 在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
我正在开发一个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) 我想过滤歌曲标题和艺术家的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) 我有一个数组适配器(字符串),并希望将其转换为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.length或adapter.size()方法或变量.
然后我尝试了这种类型的for循环
for (String s: adapter){
//add s to the list
}
Run Code Online (Sandbox Code Playgroud)
但是适配器不能在foreach循环中使用.
然后我做了一些谷歌搜索方法(在数组中)从适配器转换为列表,但没有找到任何东西.
做这个的最好方式是什么?它甚至可能吗?
在我的Android应用程序中,我想列出可以单击的选项.在您单击的任何项目上,它总是会将您带到相同的下一个屏幕,但使用不同的.putextra().我可以使用简单的ListAdapter 来完成此操作.
这很好,但我确实希望在应用程序中为不同语言翻译这些值.我想这意味着我需要在strings.xml中定义listview中的所有值.我当然可以在strings.xml中定义一些值,但我不知道从哪里开始从strings.xml获取值到listview中.
有谁知道我怎么能将可翻译的值变成Android ListView?欢迎任何提示!
我有一个自定义对话框片段,里面有一个自定义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) 我真的没有看到ArrayAdapter和ArrayList之间的差异......他们都持有数组,并对它们进行不同类型的操作..它要么是我还是不正确理解ArrayAdapter?请帮忙!谢谢.