如何获得一个特定的字符串从一个ListView项目 [英] How to get a specific String out from a ListView Item
问题描述
我想做什么
您好,大家好,我创建一个应用程序为我的朋友,我只是表明他的渠道在我的应用程序。我得到的视频的数据在JSON。
现在我发现了一个问题。当我填写的数据为我的ListView在SimpleListAdapter,并设法得到它通过一个OnItemClickListner和检索他们交给 lv.getItemAtPosition(位置);
我得到这是所有的数据存储在具体的行。但我只需要链接/ URL我保存在该领域。
问题
就像你读我得到了我的ListView一个以上的信息是完全有四根弦(拇指,标题,内容,链接)。但我只需要获得链接的字符串,我怎么能做到这一点,在这儿你找到code。
code
test2.java
包de.stepforward;
进口java.io.BufferedReader中;
进口java.io.FileOutputStream中;
进口的java.io.InputStream;
进口java.io.InputStreamReader中;
进口java.io.OutputStream中;
进口java.net.MalformedURLException;
进口的java.net.URL;
进口java.net.URLConnection中;
进口的java.util.ArrayList;
进口的java.util.HashMap;
进口的java.util.List;
进口的java.util.Map;
进口org.apache.http.NameValuePair;
进口org.json.JSONArray;
进口org.json.JSONObject;
进口android.app.ListActivity;
进口android.database.Cursor;
进口android.media.RingtoneManager;
进口android.os.Bundle;
进口android.util.Log;
进口android.view.View;
进口android.widget.AdapterView.OnItemClickListener;
进口android.widget.AdapterView;
进口android.widget.ListAdapter;
进口android.widget.ListView;
进口android.widget.SimpleAdapter;
进口android.widget.SimpleCursorAdapter;
进口android.widget.TextView;
进口android.widget.Toast;
公共类test2的扩展ListActivity {
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
字符串结果=;
串线= NULL;
ArrayList的< HashMap的<字符串,字符串>> mylist中=新的ArrayList< HashMap的<字符串,字符串>>();
//从以下网址获取数据
尝试{
网址URL =新的URL(http://gdata.youtube.com/feeds/mobile/users/TheStepForward/uploads?alt=json&format=1);
URLConnection的康恩= url.openConnection();
StringBuilder的SB =新的StringBuilder();
的BufferedReader RD =新的BufferedReader(新的InputStreamReader(conn.getInputStream()));
//读取D响应,直到D结束
而((行= rd.readLine())!= NULL){
sb.append(行+\ N);
}
结果= sb.toString();
Log.v(log_tag,追加字符串+结果);
}赶上(例外五){
Log.e(log_tag,错误转换结果+ e.toString());
}
尝试{
JSONObject的JSON =新的JSONObject的(结果);
JSONObject的饲料= json.getJSONObject(饲料);
JSONArray entrylist = feed.getJSONArray(输入);
的for(int i = 0; I< entrylist.length();我++){
//获取标题
的JSONObject电影= entrylist.getJSONObject(ⅰ);
JSONObject的标题= movie.getJSONObject(标题);
字符串txtTitle = title.getString($ T);
Log.d(标题,txtTitle);
//获取描述
JSONObject的内容= movie.getJSONObject(内容);
字符串txtContent = content.getString($ T);
Log.d(内容,txtContent);
//获取链接
JSONArray链表= movie.getJSONArray(链接);
的JSONObject链路= linklist.getJSONObject(0);
字符串txtLink = link.getString(HREF);
Log.d(链接,txtLink);
//获取缩略图
JSONObject的medialist中= movie.getJSONObject(传媒$集团);
JSONArray thumblist = medialist.getJSONArray(媒体$缩略图);
JSONObject的拇指= thumblist.getJSONObject(2);
字符串txtThumb = thumb.getString(URL);
Log.d(拇指,txtThumb.toString());
//字符串数组daraus中的Hashmapfüllen玛沁UND
HashMap的<字符串,字符串>图=新的HashMap<字符串,字符串>();
map.put(拇指,txtThumb);
map.put(标题,txtTitle);
map.put(内容,txtContent);
map.put(链接,txtLink);
mylist.add(图)
}
// ListView的füllen
ListAdapter适配器=新SimpleAdapter(这一点,mylist中,R.layout.lit,
新的String [] {拇指,标题,内容,链接},
新的INT [] {R.id.img_video,R.id.txt_title,R.id.txt_subtitle});
setListAdapter(适配器);
// OnClickLister UM的Youtube视频祖öffnen
最终的ListView LV = getListView();
lv.setOnItemClickListener(新OnItemClickListener(){
公共无效onItemClick(适配器视图<>母公司,视图V,INT位置,长的id){
lv.getItemAtPosition(位置);
}
});
}赶上(例外五){
Log.e(log_tag,错误转换结果+ e.toString());
}
}
}
感谢你在前进
最终的ListView LV = getListView();
lv.setOnItemClickListener(新OnItemClickListener(){
公共无效onItemClick(适配器视图<>母公司,视图V,INT位置,长的id){
地图<字符串,字符串>地图= mylist.get(位置);
字符串link = map.get(链接);
}
});
What I'm trying to do
Hello Guys, I'm creating an App for a friend of mine, i simply show his Channel in my App. I get the Data of the Videos over JSON.
Now I found a Problem. When I filled the data into my ListView over the SimpleListAdapter and try to get it over an OnItemClickListner and retrieve them over lv.getItemAtPosition(position);
I get all data which is stored in the specific row. But I only need the Link/Url I saved in that field.
Question
Like you read I got more than one information in my ListView to be exactly there are four Strings (Thumb,Title, Content, Link). But I only need to get the String of the Link, how can I do this, down here you find the Code.
Code
test2.java
package de.stepforward;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.http.NameValuePair;
import org.json.JSONArray;
import org.json.JSONObject;
import android.app.ListActivity;
import android.database.Cursor;
import android.media.RingtoneManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;
public class test2 extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String result = "";
String line = null;
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
//get the Data from URL
try{
URL url = new URL("http://gdata.youtube.com/feeds/mobile/users/TheStepForward/uploads?alt=json&format=1");
URLConnection conn = url.openConnection();
StringBuilder sb = new StringBuilder();
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
//read d response till d end
while ((line = rd.readLine()) != null) {
sb.append(line + "\n");
}
result = sb.toString();
Log.v("log_tag", "Append String " + result);
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}
try{
JSONObject json = new JSONObject(result);
JSONObject feed = json.getJSONObject("feed");
JSONArray entrylist = feed.getJSONArray("entry");
for(int i=0;i<entrylist.length();i++){
//Get Title
JSONObject movie = entrylist.getJSONObject(i);
JSONObject title = movie.getJSONObject("title");
String txtTitle = title.getString("$t");
Log.d("Title", txtTitle);
//Get Description
JSONObject content = movie.getJSONObject("content");
String txtContent = content.getString("$t");
Log.d("Content", txtContent);
//Get Link
JSONArray linklist = movie.getJSONArray("link");
JSONObject link = linklist.getJSONObject(0);
String txtLink = link.getString("href");
Log.d("Link", txtLink);
//Get Thumbnail
JSONObject medialist = movie.getJSONObject("media$group");
JSONArray thumblist = medialist.getJSONArray("media$thumbnail");
JSONObject thumb = thumblist.getJSONObject(2);
String txtThumb = thumb.getString("url");
Log.d("Thumb", txtThumb.toString());
//String Array daraus machen und in Hashmap füllen
HashMap<String, String> map = new HashMap<String, String>();
map.put("Thumb", txtThumb);
map.put("Title", txtTitle);
map.put("Content", txtContent);
map.put("Link", txtLink);
mylist.add(map);
}
//ListView füllen
ListAdapter adapter = new SimpleAdapter(this, mylist , R.layout.lit,
new String[] { "Thumb","Title","Content","Link"},
new int[] { R.id.img_video,R.id.txt_title,R.id.txt_subtitle});
setListAdapter(adapter);
//OnClickLister um Youtube-Video zu öffnen
final ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
lv.getItemAtPosition(position);
}
});
}catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}
}
}
Thank you in Advance
final ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Map<String, String> map = mylist.get(position);
String link = map.get("Link");
}
});
这篇关于如何获得一个特定的字符串从一个ListView项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!