我正在做一些繁重的网络任务 - 下载图片(预览) - 为了我的主UI不被阻止它在AsyncTask中做了,我想把它们放在GridView中,但我在AsyncTask完成之前设置了适配器.有些代码会更有帮助
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gridview);
new LoadAllPictures().execute();
GridView g = (GridView) findViewById(R.id.gridview);
g.setAdapter(new ImageAdapter(this));
}
Run Code Online (Sandbox Code Playgroud)
所以最后Logcat显示所有内容都已下载但屏幕上没有任何内容.我尝试在AsyncTask中执行setAdapter部分,但它告诉我:Only the original thread that created a view hierarchy can touch its views.
我该怎么办 ?
我有一个GridView基于一系列项目创建的。当网格滚动到底部时,我需要添加更多图像,但我不知道该怎么做。
现在我明白了以下几点:
ImageViews这是我的代码:
package com.wm.grid;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.Toast;
public class GridActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Integer[] mThumbIds12 = {
R.drawable.sample_2, R.drawable.sample_3,R.drawable.s1,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_6, R.drawable.sample_7,
R.drawable.sample_0, R.drawable.sample_1,
R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5, …Run Code Online (Sandbox Code Playgroud) 我有一个网格视图,其中包含从列表中填充的图像.当我从列表中删除图像时,我希望网格视图得到刷新.有人告诉我如何做到这一点.
我试图使gridview无效(),通知图像适配器数据集已更改(adapter.notifyDataSetChanged();).但这并没有给出预期的结果.
在这样做之后,我在以前移除的图像的位置得到一个空白.
android gridview invalidation android-layout android-gridview
我如何实现onItemLongClick和onItemClickGridView,以便GridView项目响应这两个事件?
我的网格布局有些问题.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/frag_books_grid_view_layout"
android:orientation="vertical">
<GridView
android:padding="0dp"
android:cacheColorHint="@color/bg_default"
android:listSelector="@drawable/list_selector_background"
android:id="@+id/frag_books_grid_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchMode="spacingWidth"
android:scrollbars="none"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
单项:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ListView
android:cacheColorHint="@color/bg_default"
android:scrollbars="none"
android:listSelector="@drawable/list_selector_background"
android:layout_gravity="center_vertical|left"
android:gravity="center_vertical|left"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:id="@+id/frag_book_list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:verticalSpacing="5dp"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
问题是单个项目没有左右填充.选择项目时看起来很糟糕:http://i.imgur.com/rirNP.png
请帮助解决它.
我试图用节标题实现GridView.我在Android GridView中发现了另外一个带有类别的问题?但是,根据接受的答案,我将"标题"作为单元格而不是标题位于其自己的行中.
我不知道我在这里失踪了什么(也尝试过MergeAdapter),有人能指出在GridView中实现节头所需的细微差别吗?
我试图在StaggeredGridView中添加Scroll监听器,我无法想出一种方法来添加,没有实现,我可以看到
Github网址
https://github.com/maurycyw/StaggeredGridView
谢谢
我的应用程序中的gridview.我想通过拖放来重新排列GridView项目.假设第一项被拖到第二项上,它们的位置应该被替换.我尝试实现Android的Home Screen的方式.但它没有用.
我一直在尝试使用GridView为我的应用程序实现widget .我是Android开发的新手.我在互联网上搜索了很多,但找不到任何有用的东西.我有点卡在这里,因为这不会在我的GridView上显示任何内容.任何帮助,将不胜感激.
提前致谢 !
这是我的代码
public class MainActivity extends AppWidgetProvider{
public static final String TOAST_ACTION = "com.example.widgetdevelopment.TOAST_ACTION";
public static final String EXTRA_ITEM = "com.example.widgetdevelopment.EXTRA_ITEM";
@Override
public void onReceive(Context context, Intent intent) {
AppWidgetManager mgr = AppWidgetManager.getInstance(context);
if (intent.getAction().equals(TOAST_ACTION)) {
int appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
int viewIndex = intent.getIntExtra(EXTRA_ITEM, 0);
Toast.makeText(context, "Touched view " + viewIndex, Toast.LENGTH_SHORT).show();
}
super.onReceive(context, intent);
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
for (int i = 0; i …Run Code Online (Sandbox Code Playgroud) 我有一个视图层次结构如下:
GridView{id=2131362110, res-name=item_list_grid,
|
+----->RelativeLayout{id=2131362124, res-name=item_image_thumb_layout
|
+------------->ImageView{id=2131362125, res-name=item_image
|
+----->RelativeLayout{id=2131362124, res-name=item_image_thumb_layout
|
+------------->ImageView{id=2131362125, res-name=item_image
|
+------>RelativeLayout{id=2131362124, res-name=item_image_thumb_layout
|
+------------->ImageView{id=2131362125, res-name=item_image
|
GridView{id=2131362110, res-name=item_list_grid, ...etc
Run Code Online (Sandbox Code Playgroud)
我想点击其中一个带有id = item_image的ImageView.
我不能像atPosition(x)一样使用onView,所以我使用了onData.我尝试了所有这些:
onData(allOf(anything(),withId(R.id.item_image))).atPosition(0).perform(click());
onData(anything()).atPosition(0).perform(click());
onData(allOf(atPosition(0),withId(R.id.item_image))).perform(click());
Run Code Online (Sandbox Code Playgroud)
但所有结果都是
android.support.test.espresso.AmbiguousViewMatcherException: 'is assignable from class: class android.widget.AdapterView' matches multiple views in the hierarchy.
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?谢谢!