获取项目单击时的数组索引

时间:2012-05-08 06:28:38

标签: android textview

我创建了一个Android RSS阅读器App.I我的android app.Iam获取RSS提要并将RSS标题存储为数组。我将此数组设置为marque text.Check代码,

String MarqueeStr="";
TextView flashnews;

for (int i = 0; i < nl.getLength(); i++) {

    MarqueeStr = MarqueeStr +" | "+ Headlines.Title[i];
        }

           flashnews.setText(MarqueeStr);

现在我必须为我的选框设置一个onclick监听器,以便用户可以查看他们被点击的标题的详细描述。我知道如何设置它。但我的问题是,如何获得点击的数组索引用户单击选取框时,在选取框文本中的字符串?

这是我的XML布局,

<TextView
  android:id="@+id/flashs"
  android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:lines="1"
    android:ellipsize="marquee"
    android:layout_marginLeft="70dp"
    android:fadingEdge="horizontal"
    android:marqueeRepeatLimit="marquee_forever"
    android:scrollHorizontally="true"
    android:singleLine="true"
    android:textColor="#e7e7e7" />

屏幕截图..

enter image description here

你能看到“最新消息”吗?它是我的字幕文本

4 个答案:

答案 0 :(得分:1)

您可以将每个FlashNews添加为动态创建的TextView。你可以把所有这些都放进去 一个Horizo​​ntalScrollView。并将他们的听众分开。

对于选取框功能,您可以在代码中以编程方式滚动horizo​​ntalView。

我不知道是否可以用你的想法来实现它。 (实际上它可以完成,但我猜它会包含疼痛)

答案 1 :(得分:1)

我认为只有动态创建文本视图并为其设置ID才能实现。就像你有10个新闻链接然后使用10个textviews

        TextView txt = null;
        View.OnClickListener marquee_click = new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                int selected_item = v.getTag();
                switch (selected_item) {
                case 0:

                    break;
                case 1:

                    break;
                case 2:

                    break;
                default:
                    break;
                }
            }
        };


        LinearLayout news_text_layout = new LinearLayout(getApplicationContext());
        news_text_layout.setOrientation(LinearLayout.HORIZONTAL);

        for (int i = 0; i < 10; i++) {
            txt = new TextView(getApplicationContext());
            txt.setTag(i);   // OR txt.setId(i);
            txt.setText("new " + i);
            txt.setOnClickListener(marquee_click);
            news_text_layout.addView(txt);
        }
        // ADD YOUR LINEAR LAYOUT ON WHICH YOU HAVE ADDED ALL TEXT VIEW IN YOUR LISTVIEW FOOTER.
        // NOW PERFORM SAME ANIMATION OR TRICK ON LINEAR LAYOUT WHICH YOU WERE PERFORMING ON marquee text.

希望它可以帮助你...

答案 2 :(得分:1)

对于动画看看我刚刚创建的。 创建新项目,然后添加我给的类和xml文件。

public class Test_stflowActivity extends Activity {
    LinearLayout ll = null;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final LinearLayout ll = (LinearLayout) findViewById(R.id.linearLayout1);
        final TranslateAnimation ts = new TranslateAnimation(200, -100, 0, 0);
        ll.setAnimation(ts);
        ts.setDuration(5000);
        TextView tv = new TextView(getApplicationContext());
        tv.setText("*bharat sharma*");
        tv.setTextSize(30);
        ll.addView(tv);
        ll.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ll.startAnimation(ts);
            }
        });
    }
}

这是xml文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >


    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true" >

    </LinearLayout>

</RelativeLayout>

it is working for me

答案 3 :(得分:0)

如果您使用带有适配器的ListView(您应该使用),则可以使用getItem(int position)函数来获取特定项目。