如何从textview获取链接以打开活动

时间:2014-07-11 11:15:54

标签: android

我的项目中有3个活动。最后一个活动在数据库中显示textview中的内容,此内容包含链接。我想打开一个新活动,根据各自的ID显示这些链接的结果。这意味着我必须将这些链接的ID传递给我的第4个活动,以便在textview中再次显示数据。 怎么做。如何在textview中获取这些链接的ID。 如果想了解更多信息,请告诉我们! 请帮助我。

提前致谢!

第三项活动Activity3.java

public class Activity3 extends Activity{


String passedVar = null;
private TextView passedView = null;

private BooklistHelper dbBookHelper = null;
private Cursor ourCursor = null;
private BookAdapter1 adapter = null;

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.act3);

    passedVar = getIntent().getStringExtra(Activity2.ID_EXTRA1);
    passedView=(TextView)findViewById(R.id.passed);

    //ListView myListView = (ListView)findViewById(R.id.myListView);
    dbBookHelper = new BooklistHelper(this);
    ourCursor = dbBookHelper.getBooksByAuthor1(passedVar);
    startManagingCursor(ourCursor);
    adapter = new BookAdapter1(ourCursor);
    //myListView.setAdapter(adapter);

    if(ourCursor != null){
        if(ourCursor.moveToFirst()){
            String value = ourCursor.getString(ourCursor.getColumnIndex("section_content"));
            passedView.setText(Html.fromHtml(""+ value));
        }
    }
    passedView.setLinksClickable(true);

    passedView.setMovementMethod(ScrollingMovementMethod.getInstance());
    passedView.setMovementMethod(LinkMovementMethod.getInstance());

}



class BookAdapter1 extends CursorAdapter{
    BookAdapter1(Cursor c) {
        super(Activity3.this, c);
    }

    @Override
    public void bindView(View row, Context ctxt, Cursor c){
        BookHolder1 holder = (BookHolder1)row.getTag();

        holder.populateFrom(c, dbBookHelper);
    }

    @Override
    public View newView(Context ctxt, Cursor c, ViewGroup parent){
        LayoutInflater inflater = getLayoutInflater();
        View row = inflater.inflate(R.layout.row3, parent, false);
        BookHolder1 holder = new BookHolder1(row);
        row.setTag(holder);
        return(row);
    }
}

static class BookHolder1{
    private TextView name = null;
     BookHolder1(View row) {
        name = (TextView)row.findViewById(R.id.bookText1);
    }
     void populateFrom(Cursor c,BooklistHelper r){

         name.setText(r.getName(c));

     }
}
}

从这个文件中我从数据库中获取textview中的数据。现在这个内容有链接init。我想打开一个活动来显示这些单独链接的数据。为此,我得到了他们的ID,并告诉我在数据库中给这些链接的路径,以便onclick活动可以基于他们的ID。对于这个链接数据,我在数据库中有不同的表。

2 个答案:

答案 0 :(得分:0)

一种可能的解决方案是将链接的ID与链接Map一起存储在String中。这样,当您想要获取特定文本视图中的链接ID时,您只需搜索String密钥,然后您就会获得您的ID。

Map<String, Long> map = new HashMap<String,Long>();
map.put("http://www.stackoverflow.com",4);

Long desiredID = map.get(textView.getText());
launchActivity(desiredID);

可能不是最好的方式,但这是可能的。

答案 1 :(得分:0)

尝试将textview标记中的ID值设置为

String id = "1";
tv.setTag(id);

用于检索你可以做

String ret_id = tv.getTag().toString();