作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Android 编程的新手,尝试在从内部存储加载信息时在 ListView 中设置项目。
我有两个正在使用的全局数组:第一个是字符串数组,其中包含列表中项目的名称,第二个是 bool 数组,用于跟踪哪些项目被划掉了。我在 ListView 中使用 TextView。
main_activity.xml:
<ListView
android:id="@+id/listViewMyList"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
rowlayout.xml:
<TextView
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:layout_marginBottom="3dp"
android:text="@+id/label" />
我创建了一个 onClickListener(),它成功地更新了每个列表项的状态:
public class MainActivity extends Activity
{
// Initialize the list (global list values)
String[] values = new String[0]; // array of items for the list
boolean[] checkedVals = new boolean[0]; // keep track of which items are crossed-off
String localFileName = "myListData.csv";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// read the data from file if present
readListFromFile();
// find the ListView
ListView lst = (ListView) findViewById(R.id.listViewMyList);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.rowlayout, R.id.label, values);
lst.setAdapter(adapter);
// define what happens on click
lst.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View view,int position, long id)
{
// read crossed status and set text flags for strikethrough
if (checkedVals[position])
{
TextView text1 = (TextView)view.findViewById(R.id.label);
text1.setPaintFlags(text1.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG);
text1.setTextColor(0xff000000);
checkedVals[position] = false;
}
else
{
TextView text1 = (TextView)view.findViewById(R.id.label);
text1.setPaintFlags(text1.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
text1.setTextColor(0xff888888);
checkedVals[position] = true;
}
// save the data in a file
saveListToFile();
}
});
}
所以这段代码可以很好地划掉和取消划掉项目。我不知道在加载列表时如何在不单击或不进行任何 Activity 的情况下划掉某些项目(由 checkedVals bool 数组确定)。
提前致谢。
最佳答案
您需要通过扩展 ArrayAdapter 并覆盖 getView()
来创建自定义适配器。
getView()
方法加载每一行的布局,这是您应该检查该行是否在您的 checkedVals
数组中并使用适当的标志绘制的地方。这Google Talk由 Android 首席程序员 Romain Guy 提供了大量有关如何执行此操作的最佳实践的信息。
关于android - 在加载 ListView 时更新划掉的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14269629/
我正在使用 Tika* 来解析 PDF 文件。检索文档的文本没有问题,但我不知道如何提取文本: 下划线 突出显示 划掉 Adobe Writer 为您提供了不同的文本编辑选项,但我看不到它们“隐藏”的
我是一名优秀的程序员,十分优秀!