0

をクリックするだけでListView別のデータにデータを送信したいアプリケーションに取り組んでいます。コードは次のようになります。ActivityImageView

package com.gabriel.utility;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import android.content.Context;
import android.content.Intent;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.ToggleButton;

import com.gabriel.activity.ContactInfoActivity;
import com.gabriel.activity.ContactListActivity;
import com.gabriel.activity.GabrielApplication;
import com.gabriel.activity.R;
import com.gabriel.database.ContactCore;
import com.gabriel.database.WebMessageCore;

public class WebMessageAdapter extends ArrayAdapter<WebMessageCore>{

    Context _Context;
    ArrayList<WebMessageCore> _WebMsgList;
    WebMessageCore _WebMsgCore;
    TextView _MsgContent;
    private LayoutInflater mInflater;
    ImageButton Arrow;
    GabrielApplication application;
    public WebMessageAdapter(Context context, int resource,
            ArrayList<WebMessageCore> contactList) {

        super(context, resource,  contactList);
        _Context = context;
        _WebMsgList = contactList;
        mInflater = LayoutInflater.from(context);
    }

    public int getCount() {
        return _WebMsgList.size();
    }

    public WebMessageCore getItem(int position) {
        return _WebMsgList.get(position);
    }

    public long getItemId(int position) {
        return position;
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.custom_row_view, null);
            holder = new ViewHolder();
            holder.txtName = (TextView) convertView.findViewById(R.id.name);
            holder.txtmessage = (TextView) convertView
                    .findViewById(R.id.meassage);
            holder.txtPhone = (TextView) convertView.findViewById(R.id.phone);
            holder.txtdate=  (TextView ) convertView.findViewById(R.id.datetime);
          holder.Arrow =  (ImageView)convertView.findViewById(R.id.settingArrow);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        _WebMsgCore=_WebMsgList.get(position);
        holder.txtName.setText(_WebMsgCore.getName());
        holder.txtmessage.setText(_WebMsgCore.getMessage());
       holder.txtPhone.setText(_WebMsgCore.getMobileNo());
        holder.Arrow.setOnClickListener( new OnClickListener(){

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
         Intent newActivity =  new Intent(_Context, ContactInfoActivity.class);

        _Context.startActivity(newActivity);

        }      

       });

       String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());
       holder.txtdate.setText(currentDateTimeString);
        return convertView;
      /* SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy HH:mm:ss.SSS a");
       Date resultdate = new Date((new Date()).getTime());
       String currentDateTimeString = sdf.format(resultdate);
       holder.txtdate.setText(currentDateTimeString);*/


    }



      /*tdate = (TextView)findViewById(R.id.datetime);
      Arrow =  (ImageButton)findViewById(R.id.settingArrow);
      String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());
      tdate.setText(currentDateTimeString);
      Arrow.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                Intent newActivity = new Intent(context, ContactInfoActivity.class);
                startActivity(newActivity);
            }
        });
            */


        //View contactView = convertView;
        /*if (contactView == null) {
            contactView = LayoutInflater.from(_Context).inflate(
                    R.layout.web_message_item, null);
        }
        _MsgContent = (TextView) contactView.findViewById(R.id.messageContent);

        //To set text as bold
        //=====================
        _MsgContent.setTypeface(null, Typeface.BOLD);

        _WebMsgCore = _WebMsgList.get(position);
        _MsgContent.setText(_WebMsgCore.getMessage());
        return contactView;
    }
    */

    static class ViewHolder {
        ImageView Arrow;
        TextView txtName;
        TextView txtmessage;
        TextView txtPhone;
        TextView txtdate;

    }
}`

次に、別のアクティビティにデータを取得したいと思います。アイデアを教えてください。

4

4 に答える 4

0

最初のアクティビティで onclick リスナーを設定するだけです (リストに)

private OnItemClickListener myListener = new OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View v, int i, long l) {

      Log.v(TAG, "onItemClick fired!" + i);

  ObjectClass mObjectClass = (ObjectClass) >parent.getItemAtPosition(i);          

      //get what where ever you need from mObjectClass then pass it with putExtra >                       //if it's a complex object use Parcelable  

  }

onCreateでこれを忘れないでください

yourList.setOnItemClickListener(myListener);

2 番目のアクティビティでは、渡されたものを取得して使用します

于 2012-05-10T07:13:38.813 に答える
0

アダプタgetView ( ) 関数コードのリスト ビューのsetTag()およびgetTag()プロパティを使用して、データを保存および取得します。

この回答も確認してください:Androidリストビューでメタデータをあるアクティビティから次のアクティビティに渡す

于 2012-05-10T07:08:51.137 に答える
0

リストはシリアライズ可能であるため、インテントを介して別のアクティビティに渡すことができます。ドキュメントを見る

WebMessageCore が Serializable も実装していることを確認してください。

于 2012-05-10T07:07:06.320 に答える
0

これを試してください(笑):

class MySingletonClass {

    private static MySingletonClass instance;
    public static MySingletonClass getInstance() {
    if(instance == null) instance = new MySingletonClass();
        return instance;
    }
    private MySingletonClass() {
    }
    Data data; //this is your data

    public void setData(Data data) {
        this.data = data;
    }
    public Data getData() {
        return data;
    }

}

次のように使用します。

アクティビティ 1: MySingletonClass.getInstance().setData(yourData);

アクティビティ 2: MySingletonClass.getInstance().getData();

これが機能しない場合: StackOverFlow.com で (100 以上の) 重複/代替ソリューションを検索してみてください

于 2012-05-10T07:07:18.437 に答える