android有一个服务器,我的应用程序的用户可以查看其他用户发布到应用程序的内容吗?

时间:2011-12-12 20:58:50

标签: android

我想知道如何创建一个应用程序,让应用程序的用户发布待售项目的图片,其他搜索它的用户可以查看这些项目。例如像craigslist for android这样的东西。我想设置一个应用程序,用户可以在其中填写编辑文本,如类别,标题,价格,描述和他们想要发布的项目的图片。如何实现这一点,以便用户也可以搜索项目。根据我的理解,我必须将用户输入的内容输出并发送到服务器,以便其他人可以搜索它,对吧?任何人都可以指导开始,这是我用户发布项目的方式:

public class Post extends Activity implements OnClickListener {

    ImageButton ibutton1;
    ImageButton ibutton2;
    ImageButton ibutton3;
    ImageButton ibutton4;
    ImageButton ibutton5;
    ImageButton ibutton6;


    Intent i1;
    Intent i2;
    Intent i3;
    Intent i4;
    Intent i5;
    Intent i6;

    final static int cameraData1 = 1;
    final static int cameraData2 = 2;
    final static int cameraData3 = 3;
    final static int cameraData4 = 4;
    final static int cameraData5 = 5;
    final static int cameraData6 = 6;

    Bitmap bmp;

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

        Button button = (Button) findViewById(R.id.bNext);
        button.setOnClickListener(mNextListener);

        // Category spinner set up
        Spinner cSpinner = (Spinner) findViewById(R.id.spCategoryPost);
        ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(
                this, R.array.category_array,
                android.R.layout.simple_spinner_item);
        adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        cSpinner.setAdapter(adapter2);

        cSpinner.setOnItemSelectedListener(new MyOnItemSelectedListener2());
        initialize();
    }

    private void initialize() {
        ibutton1 = (ImageButton) findViewById(R.id.imageButton1);
        ibutton2 = (ImageButton) findViewById(R.id.imageButton2);
        ibutton3 = (ImageButton) findViewById(R.id.imageButton3);
        ibutton4 = (ImageButton) findViewById(R.id.imageButton4);
        ibutton5 = (ImageButton) findViewById(R.id.imageButton5);
        ibutton6 = (ImageButton) findViewById(R.id.imageButton6);
        ibutton1.setOnClickListener(this);
        ibutton2.setOnClickListener(this);
        ibutton3.setOnClickListener(this);
        ibutton4.setOnClickListener(this);
        ibutton5.setOnClickListener(this);
        ibutton6.setOnClickListener(this);
    }

    public void onClick(View Images) {
        switch (Images.getId()) {

        case R.id.imageButton1:
            i1 = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(i1, cameraData1);
            break;
        case R.id.imageButton2:
            i2 = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(i2, cameraData2);
            break;
        case R.id.imageButton3:
            i3 = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(i3, cameraData3);
            break;
        case R.id.imageButton4:
            i4 = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(i4, cameraData4);
            break;
        case R.id.imageButton5:
            i5 = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(i5, cameraData5);
            break;
        case R.id.imageButton6:
            i6 = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(i6, cameraData6);
            break;
        }

    }

    private OnClickListener mNextListener = new OnClickListener() {
        public void onClick(View v) {

            EditText edit = (EditText) findViewById(R.id.etTitle);
            EditText editP = (EditText) findViewById(R.id.etPrice);
            EditText editD = (EditText) findViewById(R.id.etDescription);
            long currentTime = System.currentTimeMillis();
            Calendar cal = Calendar.getInstance();
            cal.setTimeInMillis(currentTime);
            String showTime=String.format("%1$tI:%1$tM:%1$tS %1$Tp",cal);

            Intent intent = new Intent(Post.this, PostSet.class);
            intent.putExtra("com.mandam.isellibuy.TITLE", edit.getText().toString());
            intent.putExtra("com.mandam.isellibuy.PRICE", editP.getText().toString());
            intent.putExtra("com.mandam.isellibuy.DESC", editD.getText().toString());
            intent.putExtra("currentTime", currentTime);
            startActivity(intent);

        }
    };
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode ==  RESULT_OK){
            Bundle extras = data.getExtras();
            bmp = (Bitmap) extras.get("data");
            ibutton1.setImageBitmap(bmp);
        }
    }

}

现在我获取所有这些编辑文本,微调器和图像的值,并将其返回到另一个活动,用户可以查看所有这些以确保它看起来很好并发布待售项目,这是活动:

public class PostSet extends Activity {



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

        // Setting text of edit text tvTitle from class Post
        TextView tv1 = (TextView) findViewById (R.id.tvTitleText);
        TextView tv2 = (TextView) findViewById (R.id.tvPrice);
        TextView tv3 = (TextView) findViewById (R.id.tvTimeStamp);
        TextView tv4 = (TextView) findViewById (R.id.tvDescription);

        Intent intent = getIntent();
        String edit = intent.getStringExtra("com.mandam.isellibuy.TITLE");
        String editP = intent.getStringExtra("com.mandam.isellibuy.PRICE");
        String editD = intent.getStringExtra("com.mandam.isellibuy.DESC");
        //long currentTime = extras.getLong("currentTime");

        tv1.setText(edit);
        tv2.setText(editP);
        tv4.setText(editD);
        //tv3.setText(currentTime);


    }



}

现在,此活动只显示用户的所有输入以查看它,并且有一个按钮“提交”,用户点击该按钮提交待售物品,以便其他人可以在我的应用上查看该项目。这是我对如何实现这一点感到困惑的地方?

1 个答案:

答案 0 :(得分:1)

因此,标题“Android有服务器......”中的问题答案是否定的。谷歌没有专门为Android提供的服务器。但是,Android可以进行标准网络通信 - 您可以使用您选择的任何可访问服务器。有很多免费(分层)服务器,包括Google App EngineHerokuAWS。您必须创建自己的服务器端组件。

你可能会得到一些投票,因为你问题的实际内容非常广泛。我可能会将您的问题改为“如何创建Craigslist而不是Android?”。涉及的内容很多,并且有很多可能性和不同的要求。你需要将你的问题分解成碎片,填写你能做的,然后如果你有任何特定的技术问题,那么请问StackOverflow上的那些。

我会尝试帮助您按照您的要求开始正确的方向,您应该看一下学习如何实施网络服务,然后创建一个用于发布您的商家信息并检索商家信息。在该Web服务中,您必须解释该请求,并且很可能将数据保存到数据库中。同样,在检索列表时,您必须转到数据库以检索以前存储的列表,可能对它们进行过滤/排序,然后以某种形式返回它们。

这不是一项微不足道的任务,祝你好运。