2009-06-18 5 views
8

Hai irgendjemand bitte sagen Sie mir gibt es eine Möglichkeit, ein DataGrid in Android zu erstellen, wenn ja meine bitte helfen Sie mir mit einigen Code-Schnipsel, oder geben Sie einige verwandte Web-URLs.Wie erstellt man eine DataGrid-Anzeige in Android?

+0

Könnten Sie bitte erläutern, was Sie mit DataGrid meinen? – emmby

+1

Dies ist eine Gimme-Teh-Codez-Frage, versuchen Sie Code zuerst nach allem, was Sie dafür bezahlt werden, .. und dann, wenn Sie Probleme haben, fragen Sie sie hier. – Reno

+0

Hier ist eine Android DataGrid-Komponente: http://www.androidjetpack.com/Home/AndroidDataGrid – user2453876

Antwort

9

Book.java

package com.dgrid; 

public class Book { 
    String title; 
    String author; 

    public Book(String title, String author) { 
     this.title = title; 
     this.author = author; 
    } 
    public String getTitle() { 
     return title; 
    } 
    public void setTitle(String title) { 
     this.title = title; 
    } 
    public String getAuthor() { 
     return author; 
    } 
    public void setAuthor(String author) { 
     this.author = author; 
    } 

} 

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    > 
<ListView 
    android:id="@+id/bookListView" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:divider="#ffffff" 
    /> 
</AbsoluteLayout> 

row.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
android:id="@+id/widget0" 
android:orientation="horizontal" 
android:layout_toRightOf="@android:id/icon" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#ffffff" 
xmlns:android="http://schemas.android.com/apk/res/android" 
> 
<com.dgrid.ListItemView 
android:id="@+id/title" 
android:layout_height="wrap_content" 
android:layout_width="150px" 
android:text="Title" 
android:textSize="10sp" 
android:textStyle="bold" 
android:textColor="#ff000000" 
/> 

ListItemView.java

package com.dgrid; 

import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.util.AttributeSet; 
import android.widget.TextView; 

public class ListItemView extends TextView { 
    private boolean isHeader = false; 
    private Paint linePaint; 

    public ListItemView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     init(); 
    } 

    public ListItemView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(); 
    } 

    public ListItemView(Context context) { 
     super(context); 
     init(); 
    } 

    public void init(){ 
     linePaint = new Paint(Paint.ANTI_ALIAS_FLAG); 
     linePaint.setColor(Color.parseColor("#000000")); 
    } 
    public boolean isHeader() { 
     return isHeader; 
    } 

    public void setHeader(boolean isHeader) { 
     this.isHeader = isHeader; 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     if(isHeader){ 
      canvas.drawColor(Color.parseColor("#AAFFFF99")); 
     } 
     canvas.drawLine(0, 0, getMeasuredWidth(), 0,linePaint); 
     canvas.drawLine(0, getMeasuredHeight(), getMeasuredWidth(), getMeasuredHeight(),linePaint); 
     canvas.drawLine(0,0, 0, getMeasuredHeight(),linePaint); 
    } 
} 

DatagridActivity.java

package com.dgrid; 



import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

public class DatagridActivity extends Activity { 
    Context mContext; 
    Book[] books = {new Book("Title","Author"),new Book("Clean Code","Uncle Bob"),new Book("Face 2.0","Allen Cooper")}; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mContext = this; 
     setContentView(R.layout.main); 
     ListView bookListView =(ListView)findViewById(R.id.bookListView); 
     LitemItemAdapter mcqListAdapter = new LitemItemAdapter(this,R.layout.row,books); 
     bookListView.setAdapter(mcqListAdapter); 
    } 
    class LitemItemAdapter extends ArrayAdapter<Book>{ 

     public LitemItemAdapter(Context context, int textViewResourceId, 
       Book[] objects) { 
      super(context, textViewResourceId, objects); 
     } 
     public View getView(int position, View convertView, ViewGroup parent) { 
      View v = convertView; 
      if (v == null) { 

       LayoutInflater vi = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       v = vi.inflate(R.layout.row, null); 
      } 
      Book item = books[position]; 
      if (item != null) { 
        ListItemView titleView = (ListItemView) v.findViewById(R.id.title); 
        ListItemView authorView = (ListItemView) v.findViewById(R.id.author); 
        if(position == 0){ 
         titleView.setHeader(true); 
         authorView.setHeader(true); 
        } 
        if(titleView != null){ 
         titleView.setText(item.getTitle()); 
        } 
        if(authorView != null){ 
         authorView.setText(item.getAuthor()); 
        } 
      } 
      return v; 
     }  

    } 
} 
+0

Haben Sie diesen Code nicht ausprobiert, aber ich denke, Sie könnten ohne Widget0, um die Textansicht zu wickeln. Ist der Titel auch auf 150px fest codiert? Was passiert wenn es ein langer Titel für eine Zeile ist, wird es nicht mehr wie ein Datagrid aussehen, nein? –

Verwandte Themen