2016-11-29 68 views
0

我是新來的android編程,這個任務真的需要我的學校項目。請請幫助我。如何在每一行中創建列表視圖項目+按鈕?

我已經字符串數組列表 - (從CSV檢索)

list = new ArrayList<>(Arrays.asList("111,222,333,444,555,666".split(","))); 
    myList.setAdapter(new ArrayAdapter<String>(getActivity(),R.layout.cell,list)); 

結果表示的ArrayList行文本只線。我想添加按鈕到每行生成的行以刪除點擊行。

請問我該怎麼做。感謝您瞭解我的問題。

+1

您需要創建自定義'ListView'! – AndiGeeky

+0

看看http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/ – rhari

+0

在'R.layout中創建你自己的'Adapter'來擴展'BaseAdapter'。 cell'在'TextView'旁邊添加一個按鈕。 – Abbas

回答

2

你必須創建其中具有單個項目,那麼你將與其他項目一起你的按鈕添加到該佈局自定義佈局的XML。

CustomLayout.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/tvContact" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="18sp" 
    android:textStyle="bold" /> 

<Button 
    android:id="@+id/btn" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Call" /> 


</RelativeLayout> 

現在創建自定義項目佈局後,你的ListView持有的所有項目。

MainActivity。在Java XML文件的

. 
. 
<ListView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/listview" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 
. 
. 

現在只要設置適配器與我們的自定義佈局XML

. 
. 
list = new ArrayList<String>(Arrays.asList("111,222,333,444,555,666".split(","))); 
listview.setAdapter(new MyCustomAdapter(list, context)); 
. 
. 

定義適配器類

public class MyCustomAdapter extends BaseAdapter implements ListAdapter { 
private ArrayList<String> list = new ArrayList<String>(); 
private Context context; 

public MyCustomAdapter(ArrayList<String> list, Context context) { 
    this.list = list; 
    this.context = context; 
} 

@Override 
public int getCount() { 
    return list.size(); 
} 

@Override 
public Object getItem(int pos) { 
    return list.get(pos); 
} 

@Override 
public long getItemId(int pos) { 
    return list.get(pos).getId(); 
    //just return 0 if your list items do not have an Id variable. 
} 

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    View view = convertView; 
    if (view == null) { 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = inflater.inflate(R.layout.CustomLayout, null); 
    } 

    //Handle TextView and display string from your list 
    TextView tvContact= (TextView)view.findViewById(R.id.tvContact); 
    tvContact.setText(list.get(position)); 

    //Handle buttons and add onClickListeners 
    Button callbtn= (Button)view.findViewById(R.id.btn); 

    callbtn.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v) { 
      //do something 

     } 
    }); 
    addBtn.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v) { 
      //do something 
      notifyDataSetChanged(); 
      . 
     } 
    }); 

    return view; 
} 
} 
+0

(https://s13.postimg.org/rlqjuukhz/Capture.png)即將解決我的問題,但我無法解決這個問題。請幫幫我。非常感謝。 –

+0

在那裏寫上「return pos;」 –

+0

真的非常感謝你的工作答案。 :)。你拯救了我的生命。謝謝。 –

0

我們需要ListviewActivity上市數據

SchoolAdap之三這是自定義適配器誇大每個單排

activity_listview是佈局ListviewActivity

view_listview_row這是需要每個單排

現在創建的所有文件,如下

For ListviewActivity

public class ListviewActivity extends AppCompatActivity { 

private ListView mListview; 
private ArrayList<String> mArrData; 
private SchoolAdapter mAdapter; 

@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_listview); 

    mListview = (ListView) findViewById(R.id.listSchool); 

    // Set some data to array list 
    mArrData = new ArrayList<String>(Arrays.asList("111,222,333,444,555,666".split(","))); 

    // Initialize adapter and set adapter to list view 
    mAdapter = new SchoolAdapter(ListviewActivity.this, mArrData); 
    mListview.setAdapter(mAdapter); 
    mAdapter.notifyDataSetChanged(); 

} 

對於SchoolAdapter

public class SchoolAdapter extends BaseAdapter { 

private Context mContext; 
private ArrayList<String> mArrSchoolData; 

public SchoolAdapter(Context context, ArrayList arrSchoolData) { 
    super(); 
    mContext = context; 
    mArrSchoolData = arrSchoolData; 
} 

public int getCount() { 
    // return the number of records 
    return mArrSchoolData.size(); 
} 

// getView method is called for each item of ListView 
public View getView(int position, View view, ViewGroup parent) { 
    // inflate the layout for each item of listView 
    LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    view = inflater.inflate(R.layout.view_listview_row, parent, false); 


    // get the reference of textView and button 
    TextView txtSchoolTitle = (TextView) view.findViewById(R.id.txtSchoolTitle); 
    Button btnAction = (Button) view.findViewById(R.id.btnAction); 

    // Set the title and button name 
    txtSchoolTitle.setText(mArrSchoolData.get(position)); 
    btnAction.setText("Action " + position); 

    // Click listener of button 
    btnAction.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      // Logic goes here 
     } 
    }); 

    return view; 
} 

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

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

對於activity_listview

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#D1FFFF" 
android:orientation="vertical"> 


<ListView 
    android:id="@+id/listSchool" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:divider="#0000CC" 
    android:dividerHeight="0.1dp"></ListView> 

對於view_listview_row

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical" 
android:paddingBottom="7.5dp" 
android:paddingLeft="15dp" 
android:paddingRight="15dp" 
android:paddingTop="7.5dp"> 

<TextView 
    android:id="@+id/txtSchoolTitle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:paddingLeft="2dp" 
    android:text="TextView" 
    android:textColor="@android:color/black" 
    android:textSize="20dp" /> 

<Button 
    android:id="@+id/btnAction" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="right" 
    android:text="Click Me" /> 

最後但並非最不重要,不要忘了添加在的manifest.xml您的活動

+0

謝謝您的回答。你也是一個很好的答案。非常感謝你。 –

相關問題