TextView verlinken

  • Antworten:17
Kevin W.
  • Forum-Beiträge: 30

14.05.2011, 23:23:07 via Website

Hallo Leute, ich bin gerade dabei in Android programmieren zulernen.
Für meinen "Verein" schreib ich gerade eine App


Sieht im moment so aus.
Die Ausgabe passiert in einer Tabelle, wie kann ich jetzt die entsprechenden TextViews verlinken?

Ich hab es schon so versucht:
1<TextView
2 android:textColor="#708090"
3 android:textStyle="bold"
4 android:text="Title"
5 android:layout_height="wrap_content"
6 android:id="@+id/TextView02"
7 android:layout_width="fill_parent"
8 android:onClick="dothis()">
9 </TextView>

Es passiert leider nichts.

Danke im vorraus.
Gruß Kevin

Antworten
FeGe
  • Forum-Beiträge: 14

16.05.2011, 09:45:17 via Website

Hallo,
Was heißt "verlinken"? Einen Link setzen oder aus dem Programm heraus darauf zugreifen? Im TextView kann man HTML.fromHTML() nutzen um den text zu formatieren, da werden wohl auch die <a>-Tags unterstützt, habe das in meiner App mal gemacht:

1txtNotice.setText(Html.fromHtml("<b>Notiz:</b> " + notice
2 + "<br><b>Verfügbar in " + actRegion + ":</b> " + available
3 + "<br><b>Außerdem in:</b> " + possibleRegions
4 + "<br><b>Verfügbarkeit:</b> " + availabilty));

Wenn du mit "Link" den Zugriff auf das GUI-Element via App meinst, dann geht das wie folgt:
1TextView myView = (TextView) findViewByID(R.id.TextView02);

Die Reaktion auf einen Klick mache ich dann immer mit dem entsprechenden Listener:
1txtNotice.setOnClickListener(new OnClickListener() {
2
3 public void onClick(View v) {
4 // TODO Auto-generated method stub
5
6 }
7 });

Viele Grüße,
Felix

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

16.05.2011, 11:50:07 via App

Hey,
ich glaube du musst die Klammern in der XML wegnehmen. Mache das allerdings auch immer mit dem Listener..
Lg Ansgar

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

16.05.2011, 12:25:15 via Website

android:onClick="doThis()"

musst du ändern in

android:onClick="doThis"

dann in deinem code musst du folgendes machen


public void doThis(View v) {

//do something
}

dann gehts

swordiApps Blog - Website

Antworten
Kevin W.
  • Forum-Beiträge: 30

16.05.2011, 13:37:45 via App

Super das war mein Fehler. Danke :-)

Antworten
Kevin W.
  • Forum-Beiträge: 30

16.05.2011, 13:38:01 via App

Super das war mein Fehler. Danke :-)

Antworten
Kevin W.
  • Forum-Beiträge: 30

16.05.2011, 16:38:19 via Website

Markus Gursch
android:onClick="doThis()"

musst du ändern in

android:onClick="doThis"

dann in deinem code musst du folgendes machen


public void doThis(View v) {

//do something
}

dann gehts

Geht leider nicht

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

16.05.2011, 17:09:37 via App

Vielleicht brauchst du dann noch ein android:isClickable="true"?
Lg Ansgar

Antworten
Kevin W.
  • Forum-Beiträge: 30

16.05.2011, 17:48:42 via Website

Habs jetzt so gelöst:
1public void fillList() {
2 table = (TableLayout) findViewById(R.id.TableLayout01);
3 row = new TableRow(this);
4
5 TextView columnOneText = new TextView(this);
6 TextView columnTwoText = new TextView(this);
7 columnOneText.setText(columnOneString);
8 columnTwoText.setText(columnTwoString);
9
10 columnTwoText.setOnClickListener(new OnClickListener() {
11 public void onClick(View v) {
12 doThis(v);
13 }
14 });
15
16 row.addView(columnOneText);
17 row.addView(columnTwoText);
18
19 table.addView(row, new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
20 }
21
22 public void doThis(View v) {
23 Toast.makeText(this, "ID: ", Toast.LENGTH_SHORT).show();
24 }

Nur würde ich bei der erstellung der Rows eine ID mit angeben die ich vorher in einen String gID gepackt hab.
und bei doThis() in dem Toast gern wieder ausgeben, je nach dem welchen Link ich angeklickt hab.

Gruß Kevin

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

16.05.2011, 18:29:48 via Website

Hm,
warum benutzt du eigentlich nicht gleich eine ListView? Nur mal so als Anregung..
Lg Ansgar

Antworten
Kevin W.
  • Forum-Beiträge: 30

16.05.2011, 18:37:20 via Website

Kann ich überhalb dem Listview auch eine Grafik einfügen?

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

16.05.2011, 19:17:48 via App

Natürlich, du verwendest ja keine ListActivity. Du könntest auch IN die Liste Bilder machen :grin:
Lg Ansgar

Antworten
Kevin W.
  • Forum-Beiträge: 30

16.05.2011, 19:33:43 via App

Ah ok ich schaus mir morgen mal an.
Bin neu im Android Programmieren :-)

Antworten
Kevin W.
  • Forum-Beiträge: 30

16.05.2011, 20:46:29 via App

Super vielen Dank. Ich werde es morgen Abend nach der Arbeit probieren.

Lg Kevin

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

17.05.2011, 14:41:19 via Website

Kevin W.
Markus Gursch
android:onClick="doThis()"

musst du ändern in

android:onClick="doThis"

dann in deinem code musst du folgendes machen


public void doThis(View v) {

//do something
}

dann gehts

Geht leider nicht

na sicher geht das genau so :D dann hast du wohl etwas anderes dazugebastelt, was das ganze blockiert

swordiApps Blog - Website

Antworten
Kevin W.
  • Forum-Beiträge: 30

17.05.2011, 17:36:53 via Website

Hallo,
habs jetzt mit ListView hinbekommen

1package de.kevins391.com;
2
3import java.io.BufferedReader;
4import java.io.IOException;
5import java.io.InputStream;
6import java.io.InputStreamReader;
7import java.util.ArrayList;
8
9import org.apache.http.HttpEntity;
10import org.apache.http.HttpResponse;
11import org.apache.http.client.ClientProtocolException;
12import org.apache.http.client.HttpClient;
13import org.apache.http.client.methods.HttpGet;
14import org.apache.http.impl.client.DefaultHttpClient;
15import org.json.JSONArray;
16import org.json.JSONException;
17import org.json.JSONObject;
18
19import android.app.Activity;
20import android.os.Bundle;
21import android.util.Log;
22import android.view.View;
23import android.widget.AdapterView;
24import android.widget.AdapterView.OnItemClickListener;
25import android.widget.ArrayAdapter;
26import android.widget.ListView;
27
28public class liste extends Activity {
29 /** Called when the activity is first created. */
30 String app_name;
31 String url;
32 String result;
33 JSONObject json_data;
34 ArrayList<String> resjson = new ArrayList<String>();
35 ListView lv;
36
37 @Override
38 public void onCreate(Bundle savedInstanceState) {
39 super.onCreate(savedInstanceState);
40 setContentView(R.layout.liste);
41
42 app_name = "kevins391";
43 url = "meineurl.de/meinedatei.php";
44 lv = (ListView)findViewById(R.id.listView1);
45
46 getJSONObject(url, app_name);
47
48 }
49
50 public void getJSONObject(String urlob, String app_name) {
51 .....
52 }
53
54 public void fillList() {
55 lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , resjson));
56 lv.setOnItemClickListener(new OnItemClickListener() {
57 public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
58 System.out.println("Meine id?");
59 }
60 });
61
62
63 }
64}

Wie kann ich jetzt eine ID mitgeben die ich aus dem JSON Array hol?
Also wenn ich dann zb im ListView ne Zeile anklick möcht ich die ID auslesen können?!

Danke Gruß Kevin

Antworten
Kevin W.
  • Forum-Beiträge: 30

19.05.2011, 18:30:15 via Website

Kann mir bei diesem Problem keiner helfen?

Antworten