- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
代码可以正常工作,但问题在于,某些元素在 TextView 中重复出现,而另一些则被遗漏了。例如,“我们是谁”显示了两次。我也无法将 textview 元素居中。我已经发布了它的屏幕截图。我是 Android 编程的新手,任何人都可以帮助我。
这是主要 Activity
public class MainActivity extends Activity {
GridView grid;
public WebView webView;
public int pos;
String[] desc = { "Who We Are", "What We Do", "Entrepreneur", "Scholarship", "Admission",
"Internship", "Industrial Visit", "Project", "Buy or Sell Projects", "Free Training", "College Registration",
"Information", "Feedback", "Contact" };
int[] imageId = { R.drawable.dummy, R.drawable.dummy, R.drawable.dummy,
R.drawable.dummy, R.drawable.dummy, R.drawable.dummy,
R.drawable.dummy, R.drawable.dummy, R.drawable.dummy,
R.drawable.dummy, R.drawable.dummy, R.drawable.dummy,
R.drawable.dummy, R.drawable.dummy
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activitymain);
GridDesign adapter = new GridDesign(MainActivity.this, desc, imageId);
grid = (GridView) findViewById(R.id.grid);
grid.setAdapter(adapter);
grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
pos = position;
Intent intent = new Intent(MainActivity.this, webView.class);
startActivity(intent);
}
});
}
}
这是自定义 GridView 类。
public class GridDesign extends BaseAdapter{
private Context mContext;
private final String[] desc;
private final int[] Imageid;
public GridDesign(Context c, String[] web, int[] Imageid) {
mContext = c;
this.Imageid = Imageid;
this.desc = web;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return desc.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View grid;
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
grid = new View(mContext);
grid = inflater.inflate(R.layout.grid_element, parent, false);
TextView textView = (TextView) grid.findViewById(R.id.grid_text);
ImageView imageView = (ImageView) grid
.findViewById(R.id.grid_image);
textView.setText(desc[position]);
imageView.setImageResource(Imageid[position]);
} else {
grid = (View) convertView;
}
return grid;
}
}
这是主要 Activity 布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
tools:context=".MainActivity" >
<GridView
android:id="@+id/grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="100dip"
android:gravity="center"
android:numColumns="2"
android:stretchMode="spacingWidthUniform" />
</LinearLayout>
这是单个网格元素布局
<?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:orientation="vertical" >
<ImageView
android:id="@+id/grid_image"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:contentDescription="@string/im" >
</ImageView>
<TextView
android:id="@+id/grid_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLength="23"
android:gravity="center"
android:layout_marginTop="10sp"
android:textSize="12sp" >
</TextView>
</LinearLayout>
最佳答案
如果 convertView
不是 null
,您的 getView
方法不会重置您的 View
的内容。如果 convertView
不是 null
,您需要设置内容,否则它会保留旧 View 中的旧内容,您会看到重复的数据。如果 convertView
不是 null
这意味着您正在重用一个已经滚出屏幕的 View (这使得滚动更平滑,因为您不必重新分配和取消分配 View 当你滚动时。因此,正是这种重用意味着你会看到一些重复的元素和一些缺失的元素,因为在你的 getView
方法中,当 View 被重用时你没有重置内容。
要解决此问题,您可以将设置 View 内容的代码移到 if
语句之外,这样您就可以执行以下操作:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View grid;
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
grid = new View(mContext);
grid = inflater.inflate(R.layout.grid_element, parent, false);
} else {
grid = (View) convertView;
}
TextView textView = (TextView) grid.findViewById(R.id.grid_text);
ImageView imageView = (ImageView) grid
.findViewById(R.id.grid_image);
textView.setText(desc[position]);
imageView.setImageResource(Imageid[position]);
return grid;
}
关于android - gridview元素的重复......!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31369638/
我有一个需要以编程方式作为列(而不是行)绑定(bind)到 gridview 的值列表。例如,如果我的 DAL 返回 10 个值,我需要将这 10 个值显示为 gridview 中的列作为标题文本,并
我有一个使用 out-gridview 显示结果的脚本.这是一个简单的例子: "hello world" | out-gridview 当我使用 Run with PowerShell 运行脚本时,它
我正在尝试使用工作正常的 Kartik 导出小部件,除了它没有在扩展“函数/网格”中获取数据。现在我当然明白它是如何工作的,它实际上并没有显示任何东西,只是呈现另一个 View 。但我不知道如何在导出
在 Android 教程中,GridView tutorial准确的说是有一行代码 GridView gridview = (GridView) findViewById(R.id.gridview)
我正在尝试为与我的 gridview 关联的每一列添加一个标题,这样当页面足够宽以显示多行项目时,列标题应该显示在每一列的顶部,如果页面缩小,以至于该列不再适合。 最终结果看起来像这样: 2 colu
在我使用 comboBox 而不是 default(textBox) 在 gridview 中使用这个搜索之前: [ 'attribute' => 'project_status',
我想在列中显示我的交易表中一个/所有帐户的总余额。余额列应显示添加上一行总余额的余额。 我的网格 View 代码是 'yii\grid\SerialColumn'],
我正在使用 gridview 列出我的所有数据。我的 table 看起来像这样。 $dataProvider, 'columns' => [ 'firstName',
我目前正在构建一个 Windows 8 XAML C# 应用程序。在一个页面中,我有一个用于水平滑动和滚动的滚动查看器。我有几个控件可以很好地与 scorllviewer 配合使用。但是当您滚动并且光
当调整 GridView 的大小时,它的元素被重新排列,该元素的动画似乎不起作用。 在这里你可以找到一个简单的例子:http://pastebin.com/BgST6sCv 如果单击示例中的其中一个方
如何动态更改 gridview 模板列顺序? 最佳答案 迭代 通通栏目 的网格 View 对象和 店铺 他们在 收藏 . List columns = new List(); foreach (Dat
我在 Yii2 中使用了 CRUD 生成器,它为我的 actionIndex 生成了以下代码 Controller ... public function actionIndex() { $s
在我的用户模型中我有一个函数: public function getRole() { if ($this->role == self::ROLE_USER) { return
我正在构建一个带有 Yii2 框架的 webapp,它将为用户(登录)提供下载管理员预先上传文件的能力。 我已经创建了操作 actionDownload在调用 sendFile() 的特定 Contr
我想在 GridView 中订购图像。我已经使用列表框并成功将图像添加到其中。它的显示如下 但我希望这些图像显示在 GridView 中。可能与否。 请帮助我......提前致谢 最佳答案 出于此类目
我试图通过在 QtQuick 2.0 (Qt 5) 中动态填充 ListModel 来填充 GridView。它可以工作,但应用程序启动速度非常慢: 应用程序窗口立即出现,但大约需要 2 秒才会出现浅
我在 Yii2 GridView 小部件中显示一些列,“执行人员名称”是其中之一,但它应该仅在主管登录时显示,而不是在执行人员登录时显示。 当我将可见值硬编码为零时,它不会显示如下: [ 'l
我想用 HTML 制作一个表格。所以我从数据库中获取了一些数据。 每个项目都是一个用户。用户有用户名、名字、姓氏和电子邮件。我想制作一个表格来列出这些用户。 每个用户都必须换行。我已经在互联网上搜索过
我想在 pjax 处于事件状态的排序 gridview 之后运行脚本。重新加载 gridview 后我找不到任何事件处理程序。 pjax调用和gridview刷新后有没有正确的事件处理方法? 最佳答案
在 WinRT 上,我有一个 GridView 。我想在到达 gridview 的末尾时执行一个方法。 但是,没有像 GridView 那样的事件方法。 我尝试检测对 gridview 的操纵,但似乎
我是一名优秀的程序员,十分优秀!