2016-03-15 50 views
0

我目前正在做一個簡單的Android論壇。我可以成功地從數據庫保存和檢索數據(000webhost中的phpMyAdmin)。我還可以將檢索到的數據顯示到listView中。從數據庫顯示項目到列表視圖與不同項目的不同數據

因爲它是一個論壇,不同的項目(主題)應該有不同的回覆。所以我有兩個不同的表格,一個是ForumData(用於存儲主題),另一個是​​(用於存儲回覆)。兩個表都有一個topic_id,用於引用不同的主題,例如的topic_id = 3 in ReplyData答覆有關topic_id = 3 in ForumData.

一般情況下,只應該在點擊進入專題3.每次我點擊進入不同的主題時,將顯示所有的答覆,無論topic_id是什麼顯示的topic_id = 3答覆,但。那麼,如何才能在相關主題中顯示相關回復?我應該在PHP文件或應用程序中執行它嗎?

這是在檢索應答數據我的PHP文件:

<?php 

//personal data hidden 
$con = mysql_connect(); 
mysql_select_db('db', $con); 

$r = mysql_query('SELECT ReplyData.reply_user, ReplyData.reply_content, ReplyData.reply_datetime FROM 
ReplyData INNER JOIN ForumData ON ForumData.topic_id = ReplyData.topic_id'); 
$out = array(); 

while($row = mysql_fetch_array($r)){ 
    $out[] = $row; 
} 

print(json_encode($out)); 
mysql_close($con); 

?> 

這是我爲ListView適配器:

public class MyListAdapter extends ArrayAdapter<ReplyItemList> { 
    public MyListAdapter() { 
     super(ContentPage.this, R.layout.layout_reply, itemList); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // make sure we have a view to work with 
     View itemView = convertView; 
     if (itemView == null) { 
      itemView = getLayoutInflater().inflate(R.layout.layout_reply, parent, false); 
     } 

     // find the activity to work with 
     ReplyItemList currentActivity = itemList.get(position); 
     //get current time and date 

     // fill the view 
     TextView makeReplyUser = (TextView) itemView.findViewById(R.id.tvRespondent); 
     makeReplyUser.setText("Re: " + currentActivity.getRespondent() + " "); 
     TextView makeReplyContent = (TextView) itemView.findViewById(R.id.tvReplyContent); 
     makeReplyContent.setText(currentActivity.getReplyContent()); 
     TextView makeReplyDatetime = (TextView) itemView.findViewById(R.id.tvReplyDatetime); 
     makeReplyDatetime.setText("(" + currentActivity.getDateTime() + ")"); 

     return itemView; 
    } 
} 

這是ListView的填充方法:

private void populateListView() { 
     adapter = new MyListAdapter(); 
     ListView list = (ListView) findViewById(R.id.replyList); 
     list.setAdapter(adapter); 
    } 

Log.i(fetchedTopicID + " " + respondent + " " + content + " " + datetime + " ", "json result");

+0

您還應該提供您的應用程序代碼,以及如何檢索它以及如何存儲它。 :) –

+0

@sept它不是數據檢索和存儲問題,因爲他們工作得很好。我想知道如果它是填充問題 –

回答

0

試試這個查詢。如果兩個表中的字段名稱不同,也提供tablename.field_name。例如; ReplyData.reply_user或ForumData.reply_content。

SELECT reply_user, reply_content, reply_datetime FROM 
ReplyData INNER JOIN ForumData ON ForumData.topic_id = ReplyData.topic_id 
+0

我試過這個查詢,它與我的原始的沒有什麼不同。 ReplyData中的所有細節仍顯示在每個listView項目中。兩個表中的field_name都不相同,但我只想在一個表中檢索這些表,另一個表用於指示檢索到的記錄的位置。 –

+0

如果字段名稱不同,您可以嘗試在查詢中添加tablename.field_name嗎? –

+0

對不起,我對數據庫很新。我不知道如何添加它。我有表ForumData(topic_id,topic,username,original_content,original_datetime)和ReplyData(topic_id,reply_user,reply_content,reply_datetime) –

相關問題