1

リストビューを使用してデータベースからのメッセージを表示しています.メッセージを追加すると、すべての文字列が取得され、リストビューに表示されます..ここに私のxmlファイルとJavaがあります.. 「...」を含む行。この質問について調査したところ、textview で android:singleLine="true" と入力しましたが、「textview で」の意味がわかりません。listview を使用しているため、助けてください。

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

    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/SearchMessageExit"
        android:focusableInTouchMode="true"
         >

    </ListView>

</LinearLayout>

メッセージ.java

    public void detailsOfMessage(){
        try{
            Database_message info = new Database_message(this);
            String data = info.getData();
            info.close();

            if(data.equals(""))
            {
                Toast.makeText(getApplicationContext(), "Empty Message", Toast.LENGTH_LONG).show();
            }


            StringTokenizer token = new StringTokenizer(data,"\t");
            int rows = token.countTokens();

            classes = new String[rows];

            int i=0;

            while (token.hasMoreTokens())
            {
                classes[i]=token.nextToken();
                i++;
            }


        listView = (ListView) findViewById(R.id.list);
        listView.setOnItemClickListener(this);
        listView.setOnLongClickListener(this);

        inAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,0);
        listView.setAdapter(inAdapter);


        for (int r = 0; r < classes.length; r++) {
            inAdapter.add(classes[r]);
        }
        }catch(Exception e){

            Toast.makeText(getApplicationContext(), "Empty Message", Toast.LENGTH_LONG).show();
        }
    }   
4

2 に答える 2

0

ListView 用のカスタム アダプターを実装する必要があります。
それに加えて、リスト ビューの各行に対して custom_row.xml ファイルも実装する必要があります。

例:
1. カスタム アダプター:

public class CustomAdapterListView extends BaseAdapter
{
private Activity activity;
private static LayoutInflater inflater=null;
private YOUR_DATA_TYPE data;

public CategoryDetailsCustomGridviewAdapter(Activity a, ArrayList<YOUR_DATA_TYPE> d)
{
    activity = a;
    data=d;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public int getCount() 
{
    // TODO Auto-generated method stub
    return data.size();
}

@Override
public Object getItem(int position) 
{
    // TODO Auto-generated method stub
    return position;
}

@Override
public long getItemId(int position) 
{
    // TODO Auto-generated method stub
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) 
{
    // TODO Auto-generated method stub
    View vi=convertView;
    if(convertView==null)
    {
    vi = inflater.inflate(R.layout.YOUR_LISTVIEW_ROW_XML_FILE, null);
    }

    //Fetching the Data from ArrayList for each row.
                    TextView custom_row_tv = vi.findViewById(R.id.YOUR_TEXT_VIEW_ID)
    YOUR_DATA_TYPE dataToBePopulated = new YOUR_DATA_TYPE;
                    custom_row_tv.setText(YOUR_DATA_TYPE.ToString());
    dataToBePopulated = data.get(position);     
    return vi;
}
}


2. YOUR_LISTVIEW_ROW_XML_FILE.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <TextView
        android:id="@+id/YOUR_TEXT_VIEW_ID"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true" >
    </TextView>   
</RelativeLayout>


3. カスタム アダプタのセットアップ:

Public Class YourClass extends Activity
{ 
 onCreate(....)
 {
  setContentView(R.Layout.YOUR_LAYOUT_FILE);
  ArrayList<YOUR_DATA_TYPE> data = new ArrayList<YOUR_DATA_TYPE>();
  data.add(...) //Fetch your Data from Data source into this ArrayList.
  ListView yourListView = (ListView)findViewById(R,id.YOUR_LISTVIEW_ID);
  CustomAdapterListView adapter = new CustomAdapterListView (YourClass.this, data);
  yourListView.setAdapter(adapter);
  adapter.notifyDataSetChanged();
 //YOUR OTHER FUNCTIONALITY......
 }

//YOUR OTHER METHODS.....
....
....
}


このようにして、ListView 内に埋め込まれた TextView にアタッチされた単一行の属性を使用して、カスタム ListView を簡単に実装できます。
これで問題が解決することを願っています。

于 2013-08-22T05:10:38.310 に答える