2015-06-22 155 views
-3

我需要做一个有关某些事件的议程。我有一个列表视图,其中包含关于这个事件的所有标题,我为此使用了json和mysql。列表视图项目android

问题是我是新的android,我不知道该怎么做,当我点击一个事件标题有活动与关于这个事件的信息。

我有关于数据库的信息。你可以帮我吗?我需要这样做自动。

我的代码现在是这样的:

package com.eu.agendamarinhagrande; 

import android.annotation.TargetApi; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Build; 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 
import android.widget.TextView; 

import com.eu.agendamarinhagrande.JSONParser; 
import com.eu.agendamarinhagrande.R; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.params.HttpConnectionParams; 
import org.apache.http.params.HttpParams; 
import org.apache.http.protocol.HTTP; 
import org.apache.http.util.EntityUtils; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.io.IOException; 
import java.io.UnsupportedEncodingException; 
import java.text.Normalizer; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.regex.Pattern; 


public class MainActivity extends ActionBarActivity { 

    // Progress Dialog 
    private ProgressDialog pDialog; 

    // Creating JSON Parser object 
    // JSONParser jParser = new JSONParser(); 

    ArrayList<HashMap<String, String>> empresaList; 


    // url to get all products list 
    private static String url_all_empresas = "http://www.grifin.pt/projectoamg/Conexao.php"; 

    // JSON Node names 


    private static final String TAG_TITULO = "Titulo"; 


    // products JSONArray 
    String resultado = null; 

    ListView lista; 

    @TargetApi(Build.VERSION_CODES.HONEYCOMB) 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // Hashmap para el ListView 
     empresaList = new ArrayList<HashMap<String, String>>(); 
     new Download().execute(); 
     // Cargar los productos en el Background Thread 

     lista = (ListView) findViewById(R.id.listView); 

     // ActionBar actionBar = getSupportActionBar(); 
     // actionBar.setDisplayHomeAsUpEnabled(true); 

    }//fin onCreate 


    public class Download extends AsyncTask<Void, Void, String> { 

     @Override 
     protected String doInBackground(Void... params) { 
      String out = null; 

      try { 
       DefaultHttpClient httpClient = new DefaultHttpClient(); 

       final HttpParams httpParameters = httpClient.getParams(); 

       HttpConnectionParams.setConnectionTimeout(httpParameters, 15000); 
       HttpConnectionParams.setSoTimeout(httpParameters, 15000); 

       HttpGet httpPost = new HttpGet(url_all_empresas); 

       HttpResponse httpResponse = httpClient.execute(httpPost); 
       HttpEntity httpEntity = httpResponse.getEntity(); 

       out = EntityUtils.toString(httpEntity, HTTP.UTF_8); 

      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } catch (ClientProtocolException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

      return out; 
     } 


     @TargetApi(Build.VERSION_CODES.GINGERBREAD) 
     @Override 
     protected void onPostExecute(String result) { 
      super.onPostExecute(result); 

      ArrayList<String> list = new ArrayList<>(); 

      try { 
       JSONArray jsonArray = new JSONArray(result); 
       for (int i = 0; i < jsonArray.length(); i++) { 
        JSONObject jsa = jsonArray.getJSONObject(i); 
        String str = jsa.getString("Titulo"); 
        String data = jsa.getString("Datainicio"); 
        Log.e("TAG", str); 
        Log.e("TAG", data); 


        String s1 = Normalizer.normalize(str, Normalizer.Form.NFKD); 
        String regex = Pattern.quote("[\\p{InCombiningDiacriticalMarks}\\p{IsLm}\\p{IsSk}]+"); 

        str = new String(s1.replaceAll(regex, "").getBytes("ascii"), "ascii"); 

        list.add(str+"\n"+data); 

       } 

       ArrayAdapter adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, list); 

       // updating listview 
       //setListAdapter(adapter); 
       lista.setAdapter(adapter); 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

你明白我的代码是葡萄牙的一些信息让我为你翻译

Titulo-- Title 
Data---Date 
Descricao---Information about event 
Id_evento---Id_event 
Imagem---image 
+0

在这种情况下,请只是翻译的源代码,而不是有我们为你做的。如果你想要一个答案,请用英语完全问你的问题,因为在这个网站上讲葡萄牙语的人不多。 – Dakkaron

+0

尝试处理ListView onItemClickListener,并使用Intent extra将事件数据传递给其他活动。 –

+0

男人的问题是不是代码是数据库的MySQL和它不能做什么 –

回答

2

你要你的ListView添加一个onItemClickListener。mylistview.setOnItemClickListener(this);

这是您活动的实例。请确保,您的活动正在实施onItemClickListener界面。

public class MainActivity extends Activity implements onItemClickListener{ 

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

    listView= ((ListView) findViewById (R.id.list)); 
    listView.setOnItemClickListener (this); 
empresaList = new ArrayList<HashMap<String, String>>(); 
    new Download().execute(); 
//download data to empresaList arrayList , and on PostExeCutre 
// create a new adapter with it 
// set it to list 
    } 

    public void onItemClick (AdapterView<?> parent, View view, int position, long id) 
    { 
//do what you want in your code. 
    } 
} 

长,但很好的例子约onClickListeners: http://www.mkyong.com/android/android-listview-example/

+0

at onItemClick你可以抓住你的项目: list.get(position).getTitle();列表是您的列表,其中标题是您给适配器的标题。 – Karoly

+0

家伙我去试试,如果我有一些问题,你能帮我吗?我真的很喜欢一个android:c感谢^^ –

+0

首先,欢迎在Android上,其次确定我可以提供帮助。如果我的答案将帮助它,请接受它。如果我们需要更多的事情来讨论,我会稍后将它们添加到我的答案中,以便您可以接受。 – Karoly