2011-10-28 3 views
1

RSS 리더로 작업 중이며 왜 텍스트가 제대로 정렬되어 있는지 알 수 없습니다. 내 잘 작동하지 않습니다 왜 그냥 이해할 수 없다안드로이드리스트 뷰 텍스트 정렬

:

가 나는 등의 자연 유사한 게시물 살펴 보았다.

누구든지 내 텍스트가 내 listview 내부에 제대로 정렬되어 있지 않은 이유를 설명 할 수 있습니까?

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

<ListView 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:id="@+id/itemlist" android:layout_gravity="left" 
/>  
</LinearLayout> 

이 무슨 일이 일어나고 있는지를 시각적으로 :이 이전 클래스 내 XML이

public class RSSReader extends Activity implements OnItemClickListener 
{ 

public final String RSSFEEDOFCHOICE = "http://app.calvaryccm.com/mobile/android/v1/devos"; 

public final String tag = "RSSReader"; 
private RSSFeed feed = null; 
private static final DateFormat PARSING_PATTERN = 
     new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US); 
    private static final DateFormat FORMATTING_PATTERN = 
     new SimpleDateFormat("EEEE, MMMM dd, yyyy"); 

/** Called when the activity is first created. */ 

public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.main); 

    // go get our feed! 
    feed = getFeed(RSSFEEDOFCHOICE); 

    // display UI 
    UpdateDisplay(); 

} 


private RSSFeed getFeed(String urlToRssFeed) 
{ 
    try 
    { 
     // Setup the URL 
     URL url = new URL(urlToRssFeed); 

     // Create the factory 
     SAXParserFactory factory = SAXParserFactory.newInstance(); 
     // create a parser 
     SAXParser parser = factory.newSAXParser(); 

     // Create the reader (scanner) 
     XMLReader xmlreader = parser.getXMLReader(); 
     // Instantiate our handler 
     RSSHandler theRssHandler = new RSSHandler(); 
     // Assign our handler 
     xmlreader.setContentHandler(theRssHandler); 
     // Get our data via the url class 
     InputSource is = new InputSource(url.openStream()); 
     // Perform the synchronous parse   
     xmlreader.parse(is); 
     // Get the results - should be a fully populated RSSFeed instance, or null on error 
     return theRssHandler.getFeed(); 
    } 
    catch (Exception ee) 
    { 
     // If we have a problem, simply return null 
     System.out.println(ee.getMessage()); 
     System.out.println(ee.getStackTrace()); 
     System.out.println(ee.getCause()); 
     return null; 
    } 
} 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    super.onCreateOptionsMenu(menu); 
    menu.add(Menu.NONE, 0, 0, "Refresh"); 
    Log.i(tag,"onCreateOptionsMenu"); 
    return true; 
} 

public boolean onOptionsItemSelected(MenuItem item){ 
    switch (item.getItemId()) { 
    case 0: 

     Log.i(tag,"Set RSS Feed"); 
     return true; 
    case 1: 
     Log.i(tag,"Refreshing RSS Feed"); 
     return true; 
    } 
    return false; 
} 


private void UpdateDisplay() 
{ 
    ListView itemlist = (ListView) findViewById(R.id.itemlist);  

    //ArrayAdapter<RSSItem> adapter = new ArrayAdapter<RSSItem>(this,android.R.layout.simple_list_item_1,feed.getAllItems()); 

    List<Map<String, String>> data = new ArrayList<Map<String, String>>(); 
    for (RSSItem item : feed.getAllItems()) { 
     Map<String, String> datum = new HashMap<String, String>(2); 
     datum.put("title", item.getTitle()); 

     String outputDate; 
     try { 
      Date date = PARSING_PATTERN.parse(item.getPubDate()); 
      outputDate = FORMATTING_PATTERN.format(date); 
     } catch (ParseException e) { 
      outputDate = "Invalid date"; // Date parse error 
     } 
     datum.put("date", outputDate); 
     data.add(datum); 
    } 
    SimpleAdapter adapter = new SimpleAdapter(this, data, 
               android.R.layout.simple_list_item_2, 
               new String[] {"title", "date"}, 
               new int[] {android.R.id.text1, 
                 android.R.id.text2}); 

    itemlist.setAdapter(adapter); 

    itemlist.setOnItemClickListener(this); 

    itemlist.setSelection(0); 

} 

@Override 
public void onItemClick(AdapterView parent, View v, int position, long id) 
{ 

    //Log.i(tag,"item clicked! [" + feed.getItem(position).getTitle() + "]");  

    Intent itemintent = new Intent(this,ShowDescription.class); 

    Bundle b = new Bundle(); 
    b.putString("title", feed.getItem(position).getTitle()); 
    b.putString("description", feed.getItem(position).getDescription()); 
    b.putString("link", feed.getItem(position).getLink()); 
    b.putString("pubdate", feed.getItem(position).getPubDate()); 
    b.putString("enclosure", feed.getItem(position).getEnclosure()); 

    itemintent.putExtra("android.intent.extra.INTENT", b); 

    startActivity(itemintent); 

} 

}

입니다 :

뷰를 기반으로하는 클래스입니다 :

enter image description here

답변

3

좋아요. 필드에 공백이 들어갈 수 있습니까? 트림을 사용하여 제목을 꺼내거나 디버거를 실행하여 코드가 아니라 데이터인지 확인하십시오. 나는 또한 당신이 도구 디렉토리에있는 안드로이드 SDK의 계층 구조 뷰어 도구를 살펴 권장하지만

item.getTitle().trim(); 
+0

효과가있었습니다. 도와 줘서 고마워! –

0

Sqefv의 대답은, 좋은 (나를 위해 그것의 C를 : \ AndroidSDK 도구 \).

레이아웃이 올바른지, 텍스트보기가 제대로 정렬되어 있는지 확인할 수 있습니다. 그러나 android.R.layout.simple_list_item_2를 사용하면서 항목의 제목을 잘리는 것이 더 좋을 것이라고 생각합니다. 그래도 문제가 해결되지 않으면 계층 구조 뷰어를 시도해보십시오.

관련 문제