Android настраиваемый макет просмотра списка в другой макет - PullRequest
0 голосов
/ 11 марта 2012

У меня есть пользовательский макет ListView, полученный с веб-сайта.Это позволяет мне щелкнуть элемент из списка и заново заполнить тот же макет новым списком различных элементов на основе элемента, который вы щелкнули.Макет работает отлично, и я получил его, чтобы заполнить информацией, взятой из базы данных.

Проблема, с которой я сталкиваюсь, заключается в том, что вместо того, чтобы он снова заполнял макет новым списком при нажатии, я бы хотел перейти на другой макет.Я попробовал пару вещей, но безуспешно.Вот мой кодЗаранее спасибо за помощь:

public class firstactivity extends ListActivity {
private LayoutInflater mInflater;
private Vector<RowData> data;
RowData rd;
CustomAdapter adapter;
int pos=1;
public int picpos = 0;
LinkedList<String> region = new LinkedList<String>();

String name = null;
String something = null;
    private Integer[] imgid = {          
        R.drawable.icon
        };

RelativeLayout layr1;
Animation ar3;  



@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.main);

    mInflater = (LayoutInflater) getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
    data = new Vector<RowData>();

    String finaline = "";
       //Get info from database            
       InputStream is = null;

       String result = "";
        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

        //http connection
        try{
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http://10.0.2.2:8888/PhpProject1/index.php");
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                is = entity.getContent();

        }catch(Exception e){
                Log.e("log_tag", "Error in http connection "+e.toString());
        }

        //convert response to string
        try{
                BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                }
                is.close();
                result=sb.toString();
        }catch(Exception e){
                Log.e("log_tag", "Error converting result "+e.toString());
        }
        //parse json data
        try{
                JSONArray jArray = new JSONArray(result);
                for(int i=0;i<jArray.length();i++){
                        JSONObject json_data = jArray.getJSONObject(i);
                        Log.i("log_tag"," names: "+json_data.getString("name")

                        );
                        //Get an output to the screen
                        finaline = "\n\t" + jArray.getJSONObject(i);
                        something = finaline.substring(finaline.indexOf(',',10));
                        name = something.substring(9,finaline.indexOf('\"', 9));

                        region.add(something);


                }
        }catch(JSONException e){
                Log.e("log_tag", "Error parsing data "+e.toString());
        }

    //set list with information from database
    for(int i=0;i<region.size();i++){

        try {
            rd = new RowData(i,region.get(i));
        } catch (ParseException e) {
            e.printStackTrace();
        }
         data.add(rd);
    }
    adapter = new CustomAdapter(this, R.layout.second_list,R.id.title, data);
    setListAdapter(adapter);
    getListView().setTextFilterEnabled(true);
    //getListView().setOnItemClickListener(this);

  }
/*private OnClickListener SaveListener = new OnClickListener(){
    public void onClick(View v){
        setContentView(R.layout.newlayout);
    }
};*/

/*protected void onListItemClick(ListView l, View v, int position, long id)
{
    super.onListItemClick(l, v, position, id);
    setContentView(R.layout.newlayout);
    //final Intent intent = new Intent();
    //startActivityForResult(intent, position);
}*/

public void onListItemClick(ListView parent, View v, int position, long id) { 
    adapter = (CustomAdapter) parent.getAdapter();
    data.removeAllElements();
    //String insert_list;
    ////
    //if(position==0) {
        /*setContentView(R.layout.newlayout);
        TextView textView1 = (TextView) findViewById(R.id.textView1);
        textView1.setText((String)region.get(0));*/

    //setListAdapter(adapter);
    //getListView().setTextFilterEnabled(true);
    if(position == 0)
        setContentView(R.layout.newlayout);
}

private class RowData {

    protected int mId;
    protected String mTitle;

    RowData(int id,String title){
    mId=id;
    mTitle = title;
}
    @Override
    public String toString() {
            return mId+" "+mTitle;
    }

}

private class CustomAdapter extends ArrayAdapter<RowData> {

    public CustomAdapter(Context context, int resource,
                    int textViewResourceId, List<RowData> objects) {
            super(context, resource, textViewResourceId, objects);

    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder = null;

            TextView title = null;
            TextView detail = null;
            ImageView i11=null;

            RowData rowData= getItem(position);

            if(null == convertView){
                    convertView = mInflater.inflate(R.layout.second_list, null);
                    holder = new ViewHolder(convertView);
                    convertView.setTag(holder);                   
            }
            holder = (ViewHolder) convertView.getTag();    

            title = holder.gettitle();     
            title.setText(rowData.mTitle);



            i11=holder.getImage();
            i11.setImageResource(imgid[0]);

            return convertView;
    }




    private class ViewHolder {      
        private View mRow;
        private TextView title = null;
        private TextView detail = null;
        private ImageView i11=null;            

            public ViewHolder(View row) {
            mRow = row;
            }

            public TextView gettitle() {
                    if(null == title){
                            title = (TextView) mRow.findViewById(R.id.title);
                    }
                    return title;
            }


            public ImageView getImage() {
                if(null == i11){

                    i11 = (ImageView) mRow.findViewById(R.id.img); 
            }

            return i11;
    }

}
}

}

1 Ответ

0 голосов
/ 11 марта 2012

Звучит так, будто вы ищете способ перейти к новому Activity и отобразить новый ListView. Чтобы перейти к новому занятию, вы должны сделать что-то вроде:

startActivity(new Intent(this, SecondActivity.class));

Эта строка кода создает новый объект Intent, который сообщает Android, что Activity следует открыть следующим. Затем вы передаете этот Intent методу startActivity вашего текущего Activity. Более подробное объяснение здесь: http://developer.android.com/reference/android/app/Activity.html#StartingActivities

Вам также может быть полезно передать некоторую информацию следующему Activity, например, название выбранного состояния. Вы можете сделать это, поместив эту информацию в объект Intent:

Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("state", "New York");
startActivity(intent);

Вы можете получить эти данные из SecondActivity, выполнив:

Intent incomingIntent = getIntent();
String state = incomingIntent.getExtras().getString("state");

SecondActivity относится к новому классу, который расширяет Activity, который вам нужно будет определить в своем коде. Не забудьте также добавить его в свой manifest.xml , в противном случае вы получите исключение при попытке его запустить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...