我想在长按时画出选择器,如图所示.当我长按一个项目时,CAB菜单被激活.但是单击后列表选择器指示灯会熄灭一次.我希望列表选择器处于活动状态,直到CAB菜单处于活动状态以允许多个选择.如果我双击,颜色应切换.当我点击它时,这段代码就像闪烁一样.任何人都面临类似的事情?是否有一个hack来实现这个功能?
Gridview有多个选择:
我的OnCreate中的GridView setchoice:
gridView.setChoiceMode(GridView.CHOICE_MODE_MULTIPLE_MODAL);
gridView.setMultiChoiceModeListener(new MultiChoiceModeListener());
Run Code Online (Sandbox Code Playgroud)
这很好用:
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
ImageView iv = (ImageView) v
.findViewById(R.id.imageview2);
ViewGroup gridChild = (ViewGroup) gridView
.getChildAt(position);
ViewGroup gridGrandChild = (ViewGroup) gridChild
.getChildAt(0);
ViewGroup gridGreatGrandChild = (ViewGroup) gridGrandChild
.getChildAt(0);
int childSize = gridGreatGrandChild.getChildCount();
if (iv.getId() == gridGreatGrandChild.getChildAt(1)
.getId()) {
if (iv.getVisibility() == 4)
iv.setVisibility(View.VISIBLE);
else
iv.setVisibility(View.INVISIBLE);
}
}});
Run Code Online (Sandbox Code Playgroud)
我试图在激活CAB菜单后在MultiChoiceModeListener()类中实现相同的代码.在里面复制相同的代码
public void onItemCheckedStateChanged(ActionMode mode, int position,
long id, boolean checked) {
}
Run Code Online (Sandbox Code Playgroud)
方法.但我无法访问视图组内的元素.但我能够完整地访问GridView.但不是Grid中的个别孩子. …
我有一个自定义的gridview,我正在检查循环方法以查找列表的结尾.如果滚动到达列表的末尾,它将再次向列表中添加一些元素.
gridview.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView arg0, int arg1) {
}
@Override
public void onScroll(AbsListView arg0, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
int lastInScreen = firstVisibleItem + visibleItemCount;
//is the bottom item visible & not loading more already ? Load more !
if((lastInScreen == totalItemCount) && (!loadingMore))
{
new LoadDataTask().execute();
}
}
});
Run Code Online (Sandbox Code Playgroud)
这是我的异步任务类..
private class LoadDataTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
if (isCancelled()) {
return …
Run Code Online (Sandbox Code Playgroud) 我有一个带有81个按钮的GridView.我想将clicklistener添加到此gridview,但它不可用.我添加了OnItemClickListener,但它无法正常工作,我无法理解为什么.代码没有错误.唯一不起作用的是OnItemClickListener.
我的gridview子节点上有一个按钮(gridview_members.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="match_parent"
>
<Button
android:id="@+id/city"
android:layout_width="183dp"
android:layout_height="90dp"
android:textSize="19sp"
android:textStyle="bold"
android:text="Code\n\nCity"
android:gravity="center"
android:background="@drawable/city_btn_tablet" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我的ImageAdapter类;
public class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return 81;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View gridView;
gridView …
Run Code Online (Sandbox Code Playgroud) <ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/titleBarBG"
android:layout_alignParentLeft="true" >
<RelativeLayout
android:id="@+id/scrollContent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<GridView
android:id="@+id/issueList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/archiveTitle"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:background="@drawable/customshape"
android:numColumns="3"
android:overScrollMode="never"
android:scrollbars="none" >
</GridView>
</RelativeLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
我想创建一个像桌子一样的网格视图.例如,网格的大小将增加,这将使gridview更高.我希望网格视图显示所有内容,并在有其他内容时扩展高度,而不是隐藏额外的内容
怎么实现这个?谢谢
在我的Android应用程序中,我使用a RecyclerView
来显示网格中的项目GridLayoutManager
.在GridView中,为了指定元素之间的间距,我将设置horizontalSpacing和verticalSpacing属性.
那么,我怎么能这样做RecyclerView
呢?
I am working on an Android project in which I am using the 'SuperSlim' framework for creating a grid view of Notes(Custom class) along with data to be displayed. Notes in the Database have a many-to-one relationship with Sections(Custom class). And Sections in turn have many-to-one relationship with Canvas.
All information for section, notes is dynamically retrieved from server as a List.
Now I am at the point, where I am able to display a Grid view of Sections, and …
java android android-gridview android-recyclerview superslim
第一次海报!
我是Android开发的新手,并且一直关注Google的HelloView教程,直到HelloGridView教程.出于某种原因,我无法显示任何图像,只有黑色背景.我最初遵循本教程:
http://developer.android.com/resources/tutorials/views/hello-gridview.html
但转到这个几乎相同的一个:
http://developer.android.com/guide/tutorials/views/hello-gridview.html
通过删除OnItemClickListener代码并缩小我可能的问题区域来消除一些增加的复杂性.我的代码与提供的代码完全相同,字面上复制和粘贴.我甚至从教程中下载了原始样本文件并将它们放在res\drawable文件夹中,R代码似乎已经成功识别它们并相应地更新了它生成的代码.我正在使用Android目标1.5,并在我的Droid X和使用Android模拟器上尝试过这个程序.我有我的所有导入和代码编译并运行良好.但是,我的活动只显示黑屏; 没有图像出现.当我点击黑色背景时,橙色方块出现在图像所在的位置.我找到了一两个提到这个问题的帖子,但它总是伴随着一些更大,更明显的问题,从未解决过.我将在下面列出我的代码和LogCat以供参考.
我注意到我的LogCat提到了:
WARN/ImageView(364): Unable to find resource: 2130837507
Run Code Online (Sandbox Code Playgroud)
这让我想到了这个主题: 为什么setImageResource什么都没显示? 使用setImageDrawable而不是setImageResource详细说明可能的解决方法.我使用以下代码行实现了这个:
imageView.setImageDrawable(mContext.getResources().getDrawable(mThumbIds[position]));
Run Code Online (Sandbox Code Playgroud)
但是,这导致了一个资源$ NotFoundException崩溃了我的代码(也在下面记录).
结论
我认为Android教程不应该需要一个解决方法,所以我猜我有一些配置问题.经过几个小时的搜索和尝试,我还没有找到解决方案,所以我认为这需要一些讨论.另外,这是我的第一篇文章,如果你看到任何明显的失礼,请告诉我.我提前为即将到来的墙壁代码道歉,尽管我认为数据太少可能会比太多更糟糕.:d
多谢你们!
MarnBeast
更新
我尝试在我的mThumbIds中使用R.drawable.icon,在我和我的一张照片之间交替.没有任何图片显示,但图标显示.然后我尝试了我的图片的.png版本,但这也不起作用.我复制了icon.png图片并在paint中编辑了它(在android上留下了小胡子:D)并将其保存为dummyicon.png.我在那个和图标之间交替,但这也不起作用.最后,我摆脱了所有的图标引用,只是使用了我的png图像,但奇怪的是,当运行时,所有图像都显示为图标,即使我没有在mThumbIds中引用它!这与先前的行为不同,当没有显示任何内容时.我改变了一对虚拟图标,当运行时,那些图像只是没有显示/只是黑色.所有其他图像(在mThumbIds中重复的一个png转换图像)仍然显示为图标.
最后,我再次用图标替换了我转换后的png图像引用,在icon和dummyicon之间交替,现在它们都没有显示 - 只是再次出现黑屏.因此看起来,虚拟图标和图标在引用时都不会产生任何效果,只是一个黑色空间,但是我转换后的png图像 - chloie1.png - 产生了icon.png.我添加了另一张图片 - chloie2.png - 并在chloie1和chloie2之间交替,但只有chloie1显示图标图像.因此,这是我现在的mThumbIds的状态:
private Integer[] mThumbIds = {
R.drawable.chloie1, R.drawable.chloie2,
R.drawable.chloie1, R.drawable.chloie2,
R.drawable.chloie1, R.drawable.chloie2,
R.drawable.chloie1, R.drawable.chloie2,
R.drawable.chloie1, R.drawable.chloie2,
R.drawable.chloie1, R.drawable.chloie2,
R.drawable.chloie1, R.drawable.chloie2,
R.drawable.chloie1, R.drawable.chloie2,
R.drawable.chloie1, R.drawable.chloie2,
R.drawable.chloie1, R.drawable.chloie2,
R.drawable.chloie1, R.drawable.chloie2
};
Run Code Online (Sandbox Code Playgroud)
这是模拟器的输出:
解!
事实证明,出于某些原因,本教程对于JPEG图像不起作用.此外,我做了一个愚蠢的假设,只是简单地将扩展从.jpg更改为.png,这仍然适用于图像查看器,但仍然被Android识别为jpg.现在我已经编辑了油漆中的每张图片,然后保存为PNG类型,一切似乎都运行正常.
但是我还是觉得这里有问题.我假设android应该处理.jpg图像,因为他们提供了jpegs作为他们的样本图片.如果有人知道为什么PNG有效,但JPG没有,请回复.与此同时,这个简单的修复程序也可以.
谢谢您的帮助!
参考
main.xml中:
<?xml version="1.0" encoding="utf-8"?>
<GridView …
Run Code Online (Sandbox Code Playgroud) 我在GridView中遇到行高的各种问题.
我想用XML设置项目的大小(高度/宽度)然后让GridView自动调整尽可能多的没有拉伸.如果它不适合下一个元素,它应该只在它能够适应的当前元素数量周围添加填充.
目前我得到2列(对我来说几乎看起来固定大小)并且行被拉伸.有人可以帮助解释发生了什么以及如何实现我想要的东西吗?
网格视图:
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/main_grid"
android:numColumns="auto_fit"
android:gravity="center"
android:paddingRight="20dp"
android:paddingLeft="20dp"
android:clipToPadding="true"
android:fitsSystemWindows="true"
android:stretchMode="none"
android:background="@drawable/main_grid_background">
</GridView>
Run Code Online (Sandbox Code Playgroud)
GridItem(我想要它320x320,因为我后来插入一个背景图像,如果它不是一个完美的正方形,看起来很奇怪).
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="320dp"
android:layout_height="320dp"
android:padding="10dp" >
<TextView
android:id="@+id/grid_item_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="@+id/label"
android:layout_marginTop="5dp"
android:textColor="@color/black"
android:textSize="15sp"
android:visibility="invisible"
android:layout_centerInParent="true" >
</TextView>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
Java的:
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View gridView;
if (convertView == null) {
gridView = new View(context);
// get layout from mobile.xml
gridView = inflater.inflate(R.layout.main_grid_item, …
Run Code Online (Sandbox Code Playgroud) 我在android中有一个GridView,我用从xml资源中检索的数据填充它.
例如,我在GridView中有15个项目按顺序放置.整体高度超过屏幕高度,所以我必须滚动以查看其余项目.
问题是当我向上滚动时,不可见行的顺序已经改变.这是一种神秘的行为,因为有时项目互相交换行.这是我的getView
方法:
public class ImageAdapter extends BaseAdapter {
public ImageAdapter(Context c, NodeList cuu) {
cu = cuu;
}
public int getCount() {
Log.d("Node Count",cu.getLength()+"");
return cu.getLength();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View myView = convertView;
if (convertView == null) {
Node nd = cu.item(position);
Log.d("nodes","Pos: "+(position)+" Name: "+nd.getNodeName()+" Title: "+nd.getAttributes().getNamedItem("title").getTextContent());
int catID = Integer.parseInt(nd.getAttributes().getNamedItem("id").getTextContent());
LayoutInflater li …
Run Code Online (Sandbox Code Playgroud)