我有一个网格视图,使用扩展BaseAdapter的自定义ImageAdapter类填充.图像是从SD卡中的特定文件夹动态加载的.我根据他们的帖子(1.png,2.png等)命名了图像.我还OnClickListener
为网格项设置了一个:从SD卡播放与图像同名的音频文件.
当图像数量较少并且适合屏幕时,它可以很好地工作.
但是当数字很大并且图像不适合屏幕时,通过向下滚动屏幕显示的下一组行主要是重复前几行的图像而不是相应位置的图像.
我从logcat中发现,getView()
适配器类的功能最初仅针对屏幕上可见的图像进行调用,并且在向下滚动时,不能正确调用其他位置
有时,整个图像集也会被重新排列.我应该做什么不同于网格视图的基本实现,以正确显示大量图像?还有什么我必须照顾的吗?
编辑 - 代码
我正在设置每个标签
tabGrid[i].setAdapter(new ImageAdapter(this,i));
Run Code Online (Sandbox Code Playgroud)
这是图像适配器类
@Override
public int getCount() {
// fileNames is a string array containing the image file names : 1.png, 2.png etc
return fileNames.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
// I did not use this function
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View …
Run Code Online (Sandbox Code Playgroud) 有没有办法将文本标签添加到android gridview?我正在使用标准的android示例,Hello GridView.
例如,如果我想在每个图像下面添加图像标题,有没有办法做到这一点?如果是这样,有人可以解释这将如何工作?或者,有没有其他方法来实现这一点?谢谢!
我需要一个GridView,但在每个网格中,它上面/内部都会有一个ImageView和TextView.
它将类似于每个网格中的项目图像,以及图像上项目的名称.
我是:
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some
// attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(300, 300));
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setPadding(0, 0, 0, 0);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
TextView nameView = new TextView(mContext);
nameView.setText("Name");
nameView.setTextSize(20);
parent.addView(nameView);
return imageView;
}
Run Code Online (Sandbox Code Playgroud)
在我的网格视图适配器中.但我不能在这里添加它.我也尝试在ImageView中添加它,但由于它不是ViewGroup,我无法实现.
更新:
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(mContext);
ViewHolder holder;
if (convertView == …
Run Code Online (Sandbox Code Playgroud) 我想创建一个GridView
并用数字填充它.我创建了我GridView
,我填充它然后我成功构建它,但当我运行它时,应用程序崩溃,我得到以下错误"不幸的是,......已经停止".
布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<GridLayout
android:id="@+id/gridView1"
android:numColumns="auto_fit"
android:gravity="center"
android:columnWidth="50dp"
android:stretchMode="columnWidth"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</GridLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
main.java
:
package main.java;
import android.os.Bundle;
import android.app.Activity;
import android.view.*;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
static final String[] numbers = new String[] {
"A", "B", "C", "D", "E",
"F", "G", "H", "I", "J",
"K", "L", "M", "N", "O",
"P", "Q", "R", "S", "T", …
Run Code Online (Sandbox Code Playgroud) 我的gridview中有imageview.我想禁用在android的gridview中点击的当前项目/图像.我无法做到这一点.如何做到这一点?这是一个代码 -
@Override
public void onItemClick(AdapterView<?> arg0, View v, int no,long lg) {
// TODO Auto-generated method stub
final AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
id=no;
final EditText input = new EditText(MainActivity.this);
alert.setView(input);
alert.setPositiveButton("Check", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String value = input.getText().toString();
AlertDialog.Builder alert1 = new AlertDialog.Builder(MainActivity.this);
if(value.equalsIgnoreCase(country[id])){
// here i want to disable item
alert1.setPositiveButton("Correct", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});
}
else
{
}
}
});
alert.show(); …
Run Code Online (Sandbox Code Playgroud) 我是Android编程的新手,我正在寻找一个具有网格视图的图库,然后将其推送到视图寻呼机,但是我遇到了一些问题.我目前只使用静态图像适配器,但我不知道如何更改它以使用视图寻呼机.我也希望能够将自己的标题添加到每个屏幕,但我不知道如何做到这一点,或者它是否必须是出现的图像名称?
我现在的代码是......
带有网格视图的.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"
android:background="#3d3d3e" >
<GridView
android:id="@+id/gridview1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/phone"
android:columnWidth="90dp"
android:gravity="center"
android:horizontalSpacing="10dp"
android:numColumns="3"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp" >
</GridView>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
网格视图.java
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
public class Marble extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.marble);
GridView gridView = (GridView) findViewById(R.id.gridview1);
// Instance of ImageAdapter Class
gridView.setAdapter(new ImageAdapter1(this));
/**
* On Click event for Single Gridview Item …
Run Code Online (Sandbox Code Playgroud) 所以,我想要在一个片段中添加ViewPager视图(而不是片段)作为gridview的标题,但是当我将它设置为我的标题视图时,我的ViewPager不会出现.我目前正在使用Etsy的StaggeredGridView来允许我的gridview有一个标题,我使用PagerAdapter而不是FragmentStatePagerAdapter来滚动视图而不是片段.我打算只使用片段,但我不确定这是否会好,因为我认为,这将被认为是嵌套片段,只支持4.2+并通过支持库:我的应用程序支持4.0以上,此刻,我正在使用原生片段.
我也试过以编程方式设置视图,但仍然没有显示.
我在ViewPager中设置了一个toast,看看是否有任何实际创建,并且toast按预期显示,但仍然没有标题.我试图膨胀的观点不应该是问题,因为如果我将它作为标题单独使用它就会显示出来.这是我到目前为止所拥有的:
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//inflate fragment which contains the gridview. Have a pointer to the gridview.
View v = inflater.inflate(R.layout.fragment_menu, container, false);
mGridView = (StaggeredGridView) v.findViewById(R.id.dishesGridView);
View header = inflater.inflate(R.layout.view_pager_header, container, false);
ViewPager mPager = (ViewPager) header.findViewById(R.id.pager);
//list of views to test header
final List<View> views = new ArrayList<View>();
views.add(inflater.inflate(R.layout.menu_header, null));
mPager.setAdapter(new PagerAdapter() {
public View getView(int position) {
return views.get(position);
}
@Override
public Object instantiateItem(ViewGroup collection, int position) { …
Run Code Online (Sandbox Code Playgroud) android android-layout android-gridview android-fragments android-viewpager
我正在尝试GridView
类似于这个http://framerjs.com/examples/preview/#delayed-animations.framer的动画.我尝试了slideUp动画,GridView
但所有列都在同一点移动.我需要它类似于上面的链接.
我正在尝试从Firebase数据库获取数据。断点表明它正在获取数据,但是看来我没有正确地将其分配给我的班级。
导致此异常:
java.lang.ClassCastException:无法将java.util.HashMap强制转换为Class
override fun onDataChange(p0: DataSnapshot?) {
if (p0!!.exists()){
val children = p0!!.children
children.forEach {
println(it.value.toString())
var item : DashboardItem = it.value as DashboardItem
println(item)
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是数据库导出:
{
"dashboard" : [
{ "name" : "News"},
{ "name" : "Chatroom"},
{ "name" : "Music"},
{ "name" : "Quotes"},
{ "name" : "Reminder"},
{ "name" : "Poll"},
{ "name" : "Suggestion"},
{ "name" : "LogOut"} ]
}
Run Code Online (Sandbox Code Playgroud)
我要创建的类对象
data class DashboardItem(val name: String = "")
Run Code Online (Sandbox Code Playgroud) 我正在尝试在运行时将多个网格视图添加到线性布局的滚动视图中.但只有第一行显示.请帮忙