我曾经ListView添加页脚视图,并删除它在Android版本4.4以上的工作正常但在Android版本4.3及以下的问题我使用以下代码添加页脚
listfortestmyfeed.addFooterView(footerView);
Run Code Online (Sandbox Code Playgroud)
并删除代码后的页脚
listfortestmyfeed.removeFooterView(footerView);
Run Code Online (Sandbox Code Playgroud)
在我的logcat中删除显示类强制转换异常的页脚
07-11 20:07:49.665: E/ACRA(22818): com.sample.activities fatal error : com.sample.adapters.MyfeedAdapter cannot be cast to android.widget.HeaderViewListAdapter
07-11 20:07:49.665: E/ACRA(22818): java.lang.ClassCastException: com.sample.adapters.MyfeedAdapter cannot be cast to android.widget.HeaderViewListAdapter
07-11 20:07:49.665: E/ACRA(22818): at android.widget.ListView.removeFooterView(ListView.java:390)
07-11 20:07:49.665: E/ACRA(22818): at com.sample.fragments.MyfeedNewFragment$FollowingBloopsdoinback.onPostExecute(MyfeedNewFragment.java:172)
07-11 20:07:49.665: E/ACRA(22818): at com.sample.fragments.MyfeedNewFragment$FollowingBloopsdoinback.onPostExecute(MyfeedNewFragment.java:1)
07-11 20:07:49.665: E/ACRA(22818): at android.os.AsyncTask.finish(AsyncTask.java:631)
07-11 20:07:49.665: E/ACRA(22818): at android.os.AsyncTask.access$600(AsyncTask.java:177)
07-11 20:07:49.665: E/ACRA(22818): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
07-11 20:07:49.665: E/ACRA(22818): at android.os.Handler.dispatchMessage(Handler.java:99)
07-11 20:07:49.665: E/ACRA(22818): at android.os.Looper.loop(Looper.java:137)
07-11 20:07:49.665: E/ACRA(22818): at android.app.ActivityThread.main(ActivityThread.java:5103)
07-11 20:07:49.665: E/ACRA(22818): at java.lang.reflect.Method.invokeNative(Native …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,它有一个Spinner,我想要填充一些数字(4,8,12,16).我在strings.xml中使用上面提到的项创建了一个整数数组对象,将Spinner的条目设置为整数数组,当我运行应用程序时,我得到:
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): java.lang.NullPointerException
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:198)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.view.View.measure(View.java:7965)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2989)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.LinearLayout.measureVertical(LinearLayout.java:350)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.view.View.measure(View.java:7965)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2989)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.view.View.measure(View.java:7965)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.LinearLayout.measureVertical(LinearLayout.java:464)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.view.View.measure(View.java:7965) …Run Code Online (Sandbox Code Playgroud) 让我说我扩展ArrayAdapter并在我覆盖的代码中getView(int i, View v, ViewGroup g),我使用检索当前项目 getItem(i).getItem(i)即使其他线程操作相同,我能确定会返回一个项目ArrayAdapter吗?
我不确定,但我认为答案是肯定的.如果是的话,你建议我做些什么来使它成为线程安全的?
我有一个需要检查/取消选中项目的ListView.我已经设置了一个当前使用android.R.layout.simple_list_item_multiple_choice作为行的ArrayAdapter,一切都显示正常.我也能够正确获得此项目的点击次数.但是,选中该项时,UI 中的复选框不会切换.我一直试图弄清楚这一点,有人能指出我正确的方向吗?我只是想知道如何强制UI更新以反映复选框的更改状态.
我可以提供代码,如果需要,但我正在尝试寻找一些非常具体的东西,所以我想发布一堆我的代码将没有多大帮助.
谢谢!
我认为这是专家的问题.
我从ListView数据列表中调用getView()了positon 超出界限的调用.
当我使用适配器过滤器时会发生这种情况 过滤器方法使用小于原始列表的过滤列表填充数据.
当新筛选的列表比先前 筛选的列表短时,似乎发生错误.我更改了代码,在越界时返回一个虚拟convertView,只是为了查看发出了多少这样的调用.publishResults()getView()
这些是log我记录的相关代码和消息:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// No logs here to keep ListView performance good
Log.d(TAG, "+ getView( position=" + position + ")");
ViewHolder holder;
if( position >= mData.size() ) {
// This code allows to see how many bad calls I get
Log.w(TAG, "position out of bounds!");
convertView = mInflater.inflate(mLayout, parent, false); …Run Code Online (Sandbox Code Playgroud) 我怎么能填充微调的String array,我知道我能做到这一点从array.xml这样的code:
ArrayAdapter<CharSequence> gameKindArray = ArrayAdapter.createFromResource(view.getContext(),R.array.game_kind, android.R.layout.simple_spinner_item);
gameKindArray.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
gameKind.setAdapter(gameKindArray);
Run Code Online (Sandbox Code Playgroud)
但是当我有
String[] test=new String[]{"test1","test2"};
Run Code Online (Sandbox Code Playgroud)
如何变更String[]到ArrayAdapter?!
如何在Listview中使用自定义对象的属性.如果我使用字符串列表实现ArrayAdapter,它在Listview中显示正常,但是当我使用自定义对象列表时,它只输出内存地址.
我到目前为止的代码:
ArrayList<CustomObject> allObjects = new ArrayList<>();
allObjects.add("title", "http://url.com"));
ArrayAdapter<NewsObject> adapter = new ArrayAdapter<NewsObject>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, allNews);
// Assign adapter to ListView
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Uri uri = Uri.parse( "http://www.google.com" );
startActivity(new Intent(Intent.ACTION_VIEW, uri));
}
});
Run Code Online (Sandbox Code Playgroud)
这里有一个类似的问题,但这不是我需要的,因为我只需要在列表视图中显示标题,然后点击提取网址.
我偶然发现了一个我无法理解的问题,所以我希望也许有人遇到同样的问题,或者知道解决问题的好方法.
我创建了一个包含ListView的视图.这个ListView包含两个TextView.问题是我不知道在哪里使用ArrayAdapter发送第二个文本视图中的值.有没有办法向ArrayAdapter发送更多信息,以便我可以提供"todaysmenu"TextView?
ArrayAdapter方法:
private void createList() {
ListView lv = (ListView) findViewById(R.id.mylist);
String[] values = new String[] { "Android", "Linux", "OSX",
"WebOS", "Windows7", "Ubuntu", "OS/2"
};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.rowlayout, R.id.restaurantname, values);
lv.setAdapter(adapter);
}
Run Code Online (Sandbox Code Playgroud)
行标记:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/restaurantname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+id/restaurantname"
android:textSize="23dp" >
</TextView>
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@+id/todaysmenu" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
活动布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/mylist"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
一开始我把一切都搞定了,但是当我添加第二个文本域问题时.提前谢谢你的帮助!
我有一个Android应用程序,其屏幕包含一个ListView,我用它来显示设备列表.这些设备保存在一个阵列中.
我正在尝试使用ArrayAdapter在列表中的屏幕上显示数组中的内容.
它在我第一次加载SetupActivity类时有效,但是,可以在addDevice()方法中添加新设备,这意味着更新了保存设备的阵列.
我正在使用notifyDataSetChanged(),它应该更新列表,但它似乎不起作用.
public class SetupActivity extends Activity
{
private ArrayList<Device> deviceList;
private ArrayAdapter<Device> arrayAdapter;
private ListView listView;
private DevicesAdapter devicesAdapter;
private Context context;
public void onCreate(Bundle savedInstanceState) //Method run when the activity is created
{
super.onCreate(savedInstanceState);
setContentView(R.layout.setup); //Set the layout
context = getApplicationContext(); //Get the screen
listView = (ListView)findViewById(R.id.listView);
deviceList = new ArrayList<Device>();
deviceList = populateDeviceList(); //Get all the devices into the list
arrayAdapter = new ArrayAdapter<Device>(this, android.R.layout.simple_list_item_1, deviceList);
listView.setAdapter(arrayAdapter);
}
protected …Run Code Online (Sandbox Code Playgroud) java android android-arrayadapter android-listview android-activity
我看了很多类似的问题,似乎无法发挥作用.我有一个带有这样功能的主类,编辑显示一个对话框,然后在按下按钮时编辑一个List.
public class EditPlayers extends SherlockFragmentActivity {
listPlayerNames.setAdapter(new EditPlayerAdapter(ctx,
R.layout.score_row_edit_player, listScoreEdit));
public void deletePlayer(final int position) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(
EditPlayers.this);
// Setting Dialog Title
alertDialog.setTitle("Delete Player");
// Setting Dialog Message
alertDialog.setMessage("Are you sure?");
// Setting Delete Button
alertDialog.setPositiveButton("Delete",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
listScoreEdit.remove(position);
updateListView();
}
});
// Setting Cancel Button
alertDialog.setNeutralButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
// Showing Alert Message
alertDialog.show();
}
} …Run Code Online (Sandbox Code Playgroud)