- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写我教会的 Android 应用程序,并且我正在尝试使用 ListView 作为启动板来在线查看布道。 LV 正确填充,但每个列表项中有两个 TextViews 未由光标填充 - 它们在每个列表项中具有相同的文本。 (确切地说,他们说“播放音频”和“播放视频”。)我需要一种方法来单击每个 TextView 并将其发送到某个网页。我正在尝试向每个 TextView 添加标签,但是当我尝试从我的 ViewBinder 访问它们时出现 NullPointerException。这些标签都有不同的值。
有谁知道如何为这些静态 TextView 分配标签?
SermonActivity.java
public class SermonActivity extends SherlockListActivity implements
OnClickListener, ViewBinder {
private Cursor cursor = null;
private SimpleCursorAdapter adapter = null;
private dbAdapter dba = null;
private ListView listView = null;
// Arrays
private static String[] FROM = { "title", "scripture", "speaker", "mdy",
"hour" };
private static int[] TO = { R.id.sermon_title, R.id.sermon_scripture,
R.id.sermon_speaker, R.id.sermon_date, R.id.sermon_time };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sermon);
ActionBar actionBar = getSupportActionBar();
// Makes home button visible
actionBar.setHomeButtonEnabled(true);
// Allows home button to be used to navigate up
actionBar.setDisplayHomeAsUpEnabled(true);
}
@Override
protected void onDestroy() {
super.onPause();
dba.close();
cursor.close();
}
@Override
protected void onResume() {
super.onResume();
// Setting up the database adapter
dba = new dbAdapter(this);
dba.open();
// Getting the Cursor of the requested data
cursor = dba.read("sermons", null, null);
adapter = new SimpleCursorAdapter(this, R.layout.sermon_list, cursor,
FROM, TO, 0);
adapter.setViewBinder(this);
setListAdapter(adapter);
setTitle(R.string.title_activity_sermon);
}
/*
* To dynamically change the time of day displayed as well as adding the
* title and file tags to the play buttons
*/
@Override
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
// To set the sermon time
if (view.getId() == R.id.sermon_time) {
String time = cursor.getString(cursor.getColumnIndex("hour"));
if (time.contains("AM")) {
((TextView) view).setText("Sunday AM");
} else if (time.contains("PM")) {
((TextView) view).setText("Sunday PM");
}
// Adding tags for the title and file name to the "Play audio/video"
// buttons
***TextView playAudio = (TextView) findViewById(R.id.sermon_audio);*** //This is the line that throws the NullPointerException
playAudio.setTag(R.string.file_tag,
cursor.getString(cursor.getColumnIndex("file")));
playAudio.setTag(R.string.title_tag,
cursor.getString(cursor.getColumnIndex("title")));
TextView playVideo = (TextView) findViewById(R.id.sermon_video);
playVideo.setTag(R.string.file_tag,
cursor.getString(cursor.getColumnIndex("file")));
playVideo.setTag(R.string.title_tag,
cursor.getString(cursor.getColumnIndex("title")));
return true;
}
else {
return false;
}
}
@Override
public void onClick(View view) {
int id = view.getId();
// Starting WebActivity with needed data values
if (id == R.id.sermon_audio || id == R.id.sermon_video) {
Intent intent = new Intent(this, WebActivity.class);
intent.putExtra("file", (String) view.getTag(R.string.file_tag));
intent.putExtra("title", (String) view.getTag(R.string.title_tag));
String type = null;
if (id == R.id.sermon_audio) {
type = "audio";
} else if (id == R.id.sermon_video) {
type = "video";
}
intent.putExtra("type", type);
startActivity(intent);
}
}
}
sermon_list.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:clickable="false"
android:longClickable="false"
android:orientation="vertical" >
<ImageView
android:id="@+id/sermon_thumbnail"
style="@style/Thumbnail"
android:src="@drawable/sermon" />
<TextView
android:id="@+id/sermon_audio"
style="@style/FeedBody"
android:layout_alignParentLeft="true"
android:layout_below="@+id/sermon_speaker"
android:layout_marginTop="15dp"
android:clickable="true"
android:onClick="onClick"
android:paddingLeft="25dp"
android:text="Play audio"
android:textColor="@color/link" />
<TextView
android:id="@+id/sermon_video"
style="@style/FeedBody"
android:layout_alignBaseline="@+id/sermon_audio"
android:layout_alignBottom="@+id/sermon_audio"
android:layout_alignParentRight="true"
android:clickable="true"
android:onClick="onClick"
android:paddingRight="25dp"
android:text="Play video"
android:textColor="@color/link" />
<TextView
android:id="@+id/sermon_title"
style="@style/FeedTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/sermon_thumbnail"
android:lines="2"
android:scrollHorizontally="false"
android:singleLine="false"
android:width="0dip" />
<TextView
android:id="@+id/sermon_scripture"
style="@style/FeedBody"
android:layout_alignParentLeft="true"
android:layout_below="@+id/sermon_thumbnail"
android:paddingLeft="3dp"
android:text="Scripture" />
<TextView
android:id="@+id/sermon_speaker"
style="@style/FeedBody"
android:layout_alignParentLeft="true"
android:layout_below="@+id/sermon_scripture"
android:paddingLeft="3dp"
android:text="Speaker" />
<TextView
android:id="@+id/sermon_time"
style="@style/FeedBody"
android:layout_alignBaseline="@+id/sermon_speaker"
android:layout_alignBottom="@+id/sermon_speaker"
android:layout_alignParentRight="true"
android:paddingRight="3dp"
android:paddingTop="5dp"
android:text="Time" />
<TextView
android:id="@+id/sermon_date"
style="@style/FeedBody"
android:layout_alignBaseline="@+id/sermon_scripture"
android:layout_alignBottom="@+id/sermon_scripture"
android:layout_alignParentRight="true"
android:paddingRight="3dp"
android:text="Date" />
</RelativeLayout>
堆栈跟踪
03-19 17:17:45.942: W/ActivityThread(21858): Application com.lakesidebaptist.lakesidelife is waiting for the debugger on port 8100...
03-19 17:17:45.958: I/System.out(21858): Sending WAIT chunk
03-19 17:17:45.965: I/dalvikvm(21858): Debugger is active
03-19 17:17:46.161: I/System.out(21858): Debugger has connected
03-19 17:17:46.161: I/System.out(21858): waiting for debugger to settle...
03-19 17:17:46.364: I/System.out(21858): waiting for debugger to settle...
03-19 17:17:46.559: I/System.out(21858): waiting for debugger to settle...
03-19 17:17:46.762: I/System.out(21858): waiting for debugger to settle...
03-19 17:17:46.965: I/System.out(21858): waiting for debugger to settle...
03-19 17:17:47.161: I/System.out(21858): waiting for debugger to settle...
03-19 17:17:47.364: I/System.out(21858): debugger has settled (1300)
03-19 17:17:47.794: D/dalvikvm(21858): GC_CONCURRENT freed 186K, 3% free 10996K/11271K, paused 13ms+12ms, total 37ms
03-19 17:17:47.981: D/libEGL(21858): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
03-19 17:17:47.981: D/libEGL(21858): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
03-19 17:17:47.981: D/libEGL(21858): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
03-19 17:17:48.036: D/OpenGLRenderer(21858): Enabling debug mode 0
03-19 17:17:51.848: D/dalvikvm(21858): GC_CONCURRENT freed 230K, 3% free 11206K/11527K, paused 14ms+13ms, total 54ms
03-19 17:17:51.903: I/none(21858): SELECT * FROM 'sermons';
03-19 17:17:51.903: I/none(21858): 20
03-19 17:17:55.731: D/dalvikvm(21858): Debugger has detached; object registry had 995 entries
03-19 17:17:55.731: D/AndroidRuntime(21858): Shutting down VM
03-19 17:17:55.731: W/dalvikvm(21858): threadid=1: thread exiting with uncaught exception (group=0x4182e300)
03-19 17:17:55.747: E/AndroidRuntime(21858): FATAL EXCEPTION: main
03-19 17:17:55.747: E/AndroidRuntime(21858): java.lang.NullPointerException
03-19 17:17:55.747: E/AndroidRuntime(21858): at com.lakesidebaptist.lakesidelife.ui.Content.SermonActivity.setViewValue(SermonActivity.java:90)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.support.v4.widget.SimpleCursorAdapter.bindView(SimpleCursorAdapter.java:131)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.support.v4.widget.CursorAdapter.getView(CursorAdapter.java:256)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.widget.AbsListView.obtainView(AbsListView.java:2267)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.widget.ListView.makeAndAddView(ListView.java:1769)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.widget.ListView.fillDown(ListView.java:672)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.widget.ListView.fillFromTop(ListView.java:733)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.widget.ListView.layoutChildren(ListView.java:1622)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.widget.AbsListView.onLayout(AbsListView.java:2102)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.view.View.layout(View.java:13754)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.view.ViewGroup.layout(ViewGroup.java:4362)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.widget.RelativeLayout.onLayout(RelativeLayout.java:948)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.view.View.layout(View.java:13754)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.view.ViewGroup.layout(ViewGroup.java:4362)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.view.View.layout(View.java:13754)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.view.ViewGroup.layout(ViewGroup.java:4362)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1649)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1507)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.widget.LinearLayout.onLayout(LinearLayout.java:1420)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.view.View.layout(View.java:13754)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.view.ViewGroup.layout(ViewGroup.java:4362)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.view.View.layout(View.java:13754)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.view.ViewGroup.layout(ViewGroup.java:4362)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1866)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1687)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4212)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.view.Choreographer.doCallbacks(Choreographer.java:555)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.view.Choreographer.doFrame(Choreographer.java:525)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.os.Handler.handleCallback(Handler.java:615)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.os.Handler.dispatchMessage(Handler.java:92)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.os.Looper.loop(Looper.java:137)
03-19 17:17:55.747: E/AndroidRuntime(21858): at android.app.ActivityThread.main(ActivityThread.java:4745)
03-19 17:17:55.747: E/AndroidRuntime(21858): at java.lang.reflect.Method.invokeNative(Native Method)
03-19 17:17:55.747: E/AndroidRuntime(21858): at java.lang.reflect.Method.invoke(Method.java:511)
03-19 17:17:55.747: E/AndroidRuntime(21858): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
03-19 17:17:55.747: E/AndroidRuntime(21858): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-19 17:17:55.747: E/AndroidRuntime(21858): at dalvik.system.NativeStart.main(Native Method)
最佳答案
尝试使用该方法提供的 View 并在其上找到 View ,如下所示:
TextView playAudio = (TextView) view.findViewById(R.id.sermon_audio);
编辑:
您可能需要先找到父 View ,然后在其上使用 findViewById,尝试如下操作:
RelativeLayout parent = (RelativeLayout)view.getParent();
TextView playAudio = (TextView) parent.findViewById(R.id.sermon_audio);
关于android - 给 ListView 的 TextView 添加标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15510951/
所以我使用一个带有整个 block 的标签作为链接,它是一个产品展示,所以你点击它会转到产品页面。现在我创建了一个标签作为链接到购物车页面的按钮。所以我让它工作,但是当我点击购物车按钮时,两个页面都会
根据 Web 标准,创建带有标题 1 的链接的正确代码是什么? 是吗 stackoverflow 或 stackoverflow 谢谢 最佳答案 根据网络标准,您不能将 block 元素放入内
在Java中它是这样写的..当我移植这段代码时...意识到没有这样的东西 break 和continue . 我知道这些命令没有包含在内,因为在使用带有命令的 goto 时必须有一种更简洁的方法来执
我们有一个相当标准的发布过程,使用 Visual Source Safe 在发布之前标记构建。这允许我们在出现任何问题时从该标签中获取,并在需要更改时使用它进行分支。 我们有几个不同的项目,并且总是使
我必须创建一个搜索内容,其中包含搜索框、标题和段落描述。默认情况下,描述被禁用,当我输入一些与描述文本匹配的文本时,描述段落标签应该打开。一些匹配的演示是这样的: [ fiddle ][1] 但默认情
我一直在阅读有关 的文档标签,我似乎无法理解它与简单地使用 有何不同那是 display: none; 文档:template tag 例子 对比 例子
我需要一个脚本来复制当开关按钮打开时标记,当开关按钮关闭时删除标记。我需要一个简单的方法。这是开关按钮: 我试过这个: var change
JSF 是一个 MVC 框架,但我很困惑为什么我们已经有了这么多 HTML 标签还需要 JSF 标签。毫无疑问,JSF 简化了很多事情。我想进一步了解 JSF 中的模型 View 和 Controll
我在这个 website 上看到了那些 html 代码: Homepa
我添加了 photoswipe 插件,可以使用 搜索我的所有照片。标签,如果点击,照片就会变成全屏。我让它工作了,但现在我的导航栏(有 标签)在点击时会触发 photoswipe 插件。 在 ph
标签
我正在尝试截断显示自 的文本标签,但它不工作。我将样式应用于其他标签样式并且它确实有效(我看到的示例中没有一个使用 标签)。我想知道是否有人可以向我解释为什么会这样(我不是最擅长 HTML/CSS
HTML 是这样的: Menu 1 Menu 2 Sub menu 2
我可以更改 TextInputLayout 的位置 float 标签(底部 float 标签)吗?我需要为波纹管 float 标签设置正确的位置。 最佳答案 我解决了我的问题,这是我的 xml:
我的代码是 printMsg : function(data) { $("#message").html(data.bodyText); ... } 这里 data.body
我是 Scrapy 和 Xpath 的初学者,我正在寻找解析具有以下结构的网站 cat1 value1 value2
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及
我必须从 xml 中解析数据。这是我的 xml- 或者它的 url 是:http://mobileecommerce.site247365.com/admin/catdata.xml News f
如何创建应该允许多行数据的标记。不要说使用textarea标签。我知道,但我只想 标记因为标签具有 value 属性。所以当我从 xml 文件获取值时,我应该使用 jquery 语法动态获取.. 最佳
我有一个页面使用我定义的某些样式。 在同一页面上,我刚刚导入了一个使用自己样式的外部 jQuery 插件,例如,包括 。被我自己覆盖的标签样式。 如何确保我的样式表中的样式不会覆盖 jQuery 插件
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 8 年前。 Improve
我是一名优秀的程序员,十分优秀!