2015-09-12 6 views
-3

Мой пользовательский адаптер не работает. Я хочу показать listview, каждую строку списка с относительным макетом, который имеет текст, edittext и две кнопки. Я инициализирую строку имен. Элемент имен строк будет отличаться в каждой строке списка. Я новичок в андроиде. Просьба указать ошибку, а также указать, почему вывод не отображается. здесь кодЧто случилось с этим адаптером?

MainActivity.java

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends Activity { 
    ListView listView; 
    String[] names=new String[]{ 
      "Name1" , "Name2" , "Name3"}; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 




    listView=(ListView) findViewById(R.id.list); 
    listView.setAdapter(new CustomAdapter(this,names)); 
    listView.setOnItemClickListener(new OnItemClickListener(){ 

     @Override 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id){ 
      Toast.makeText(
        getApplicationContext(),((TextView) v.findViewById(R.id.text)) 
         .getText(), Toast.LENGTH_SHORT).show(); 



     } 

    }); 

    } 



@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 
} 

CustomAdapter.java

import android.content.Context; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.BaseAdapter; 
    import android.widget.Button; 
    import android.widget.EditText; 
    import android.widget.TextView; 

    public class CustomAdapter extends BaseAdapter { 


Context context; 
final String[] Name; 

public CustomAdapter(Context context, String[] Name) 
{ 
    this.context=context; 
    this.Name=Name; 

} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 

    LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View listView; 
    if(convertView==null) 
    { 
     listView=new View(context); 
     listView=inflater.inflate(R.layout.activity_main,null); 
     TextView name=(TextView) listView.findViewById(R.id.text); 
     name.setText(Name[position]); 
     EditText editText=(EditText) listView.findViewById(R.id.editText); 
     editText.setHint("write here"); 
     Button btn1=(Button) listView.findViewById(R.id.btnok); 
     name.setText("OK"); 
     Button btn2=(Button) listView.findViewById(R.id.btncancel); 
     name.setText("cancel"); 
    } 
    else 
    { 
     listView= (View) convertView; 
    } 

    return listView; 
} 





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

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

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


    } 

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/childlayout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.customlayout.MainActivity" > 

<TextView 
    android:id="@+id/text" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    /> 

<EditText 
    android:id="@+id/editText" 
    android:layout_width="400dp" 
    android:layout_height="50dp" 

    /> 

<Button 
    android:id="@+id/btnok" 
    android:layout_below="@+id/editText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="OK" 

    /> 
<Button 
    android:id="@+id/btncancel" 
    android:layout_below="@+id/editText" 
    android:layout_toRightOf="@+id/btnLike" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Cancel" 

    /> 

listvi ew.xml

<?xml version="1.0" encoding="UTF-8"?> 
<ListView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/list" 
android:layout_height="wrap_content" 
android:layout_width="match_parent"> 
</ListView> 
+0

попытаться удалить 'GetItem () 'и' getItemId() '.. и запустить его .. –

ответ

-1

Попробуйте,

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.activity_main, parent, false); 
     } 
     TextView name = (TextView) convertView.findViewById(R.id.text); 
     name.setText(Name[position]); 
     EditText editText = (EditText) convertView.findViewById(R.id.editText); 
     editText.setHint("write here"); 
     Button btn1 = (Button) convertView.findViewById(R.id.btnok); 
     name.setText("OK"); 
     Button btn2 = (Button) convertView.findViewById(R.id.btncancel); 
     name.setText("cancel"); 
     return convertView; 
    } 
+0

все еще не работает – user5300251

0

Попробуйте изменить изменение его, как ,,

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.activity_main, parent, false); 
     } 
     TextView name = (TextView) convertView.findViewById(R.id.text); 
     name.setText(Name[position]); 
     EditText editText = (EditText) convertView.findViewById(R.id.editText); 
     editText.setHint("write here"); 
     Button btn1 = (Button) convertView.findViewById(R.id.btnok); 
     name.setText("OK"); 
     Button btn2 = (Button) convertView.findViewById(R.id.btncancel); 
     name.setText("cancel"); 
     return convertView; 
    } 

и удалить

@Override 
public Object getItem(int arg0) { 
    // TODO Auto-generated method stub 
    return Name[arg0]; 
} 

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

не может удалить функции getItem() и getItemId(), поскольку у меня есть расширенный класс CustomAdapter от BaseAdapter. – user5300251

+0

Хорошо, чем попробовать отредактированный ответ. –

Смежные вопросы