-1

我實現了一個具有線性佈局和列表視圖的相對佈局。線性佈局包含一個圖像和一個按鈕。有沒有人可以幫助我?點擊這兩個監聽器都無法工作。線性佈局按鈕點擊不起作用

layout design

這裏是activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#ffffff" 
android:paddingBottom="@dimen/activity_vertical_margin" 
tools:context=".MainActivity"> 

<LinearLayout 
android:layout_width="fill_parent" 
android:paddingTop="0dp" 
android:id="@+id/ll" 
android:layout_height="50dp" 

android:background="#00897B" 
android:orientation="horizontal" 
android:weightSum="2" 
android:layout_alignParentTop="true" 
android:layout_alignParentStart="true"> 
<Button 
    style="?android:attr/buttonStyleSmall" 
    android:background="#00897B" 
    android:layout_width="180dp" 

    android:layout_height="wrap_content" 
    android:textStyle="bold" 
    android:layout_weight="1.9" 
    android:textAllCaps="false" 
    android:layout_gravity="center_horizontal" 
    android:textSize="16dp" 
    android:textColor="#ffffff" 
    android:text="Register an event" 
    android:id="@+id/button" 
    android:layout_alignTop="@+id/listView" 
    android:layout_alignParentStart="true" /> 
<ImageView 
    android:layout_width="20dp" 
    android:layout_height="30dp" 
    android:layout_weight="0.1" 
    android:layout_marginTop="10dp" 
    android:background="@drawable/refr" 
    android:id="@+id/refresh" 
    android:onClick="ref" 
    android:layout_alignParentEnd="true" 

    android:layout_marginEnd="28dp" 
    android:layout_alignBottom="@+id/ll" 
    android:layout_alignParentTop="true" /> 
</LinearLayout> 
<ListView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/listView" 
    android:paddingTop="60dp" 
    android:layout_below="@+id/ll" 
    android:paddingLeft="10dp" 
    android:paddingRight="10dp" 
    android:divider="#2196f3" 
    android:dividerHeight="3dp" 
    android:scrollbars="none" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" /> 
</RelativeLayout> 

這裏是MainActivity.java

public class MainActivity extends Activity { 

ListView lv; 
Button bt1; 
TextView tv1,tv2,tv3; 
ArrayList<String> a=new ArrayList<String>(); 
ArrayList<String> b=new ArrayList<String>(); 
ArrayList<String> c=new ArrayList<String>(); 
ArrayList<String> d=new ArrayList<String>(); 
String mydata,name,name1,society,date,venue; 
public String[] s1 = new String[50]; 
public String[] s2=new String[50]; 
public String[] s3=new String[50]; 
public String[] s4=new String[50]; 
public int[] img = {R.drawable.rty, R.drawable.sf, R.drawable.rty}; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    tv1=(TextView)findViewById(R.id.textView); 
    lv = (ListView) findViewById(R.id.listView); 
    Button bt1=(Button)findViewById(R.id.button); 
    bt1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      Intent in=new Intent(MainActivity.this,webform.class); 
      startActivity(in); 
     } 
    }); 
    ConnectionDetector cd = new ConnectionDetector(getApplicationContext()); 
    Boolean isInternetPresent = cd.isConnectingToInternet(); // true or false 

    if(isInternetPresent) { 
     new MyData().execute(); 
    } 
    else 
    Toast.makeText(MainActivity.this,"No Internet Connection",Toast.LENGTH_SHORT).show(); 
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      Intent in = new Intent(MainActivity.this, listclick.class); 
      in.putExtra("position", position); 
      startActivity(in); 

     } 
    }); 
} 




public void ref(View v) 
{ 
    ConnectionDetector cd = new ConnectionDetector(getApplicationContext()); 
    Boolean isInternetPresent = cd.isConnectingToInternet(); 
    if(isInternetPresent) { 



     new MyData().execute(); 


    } 
    else 
     Toast.makeText(MainActivity.this,"No Internet Connection",Toast.LENGTH_SHORT).show(); 

} 
public class MyData extends AsyncTask<String,String,String> 
{ 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
    } 

    @Override 
    protected void onPostExecute(String s) { 
     super.onPostExecute(s); 
     CustomAdapter cad = new CustomAdapter(MainActivity.this, s1, img,s2,s3,s4); 
     lv.setAdapter(cad); 
     cad.notifyDataSetChanged(); 
    } 

    @Override 
    protected String doInBackground(String... params) { 
     getData(); 
     return null; 
    } 
} 

public void getData() 
{ 
    try { 
     HttpClient httpClient=new DefaultHttpClient(); 

     HttpPost httpPost=new HttpPost("http://collegeevents.esy.es/abc.php"); 
     HttpResponse response=httpClient.execute(httpPost); 
     HttpEntity httpEntity=response.getEntity(); 
     InputStream is=httpEntity.getContent(); 
     BufferedReader reader=new BufferedReader(new InputStreamReader(is,"utf-8"),8); 
     StringBuilder strbuilder=new StringBuilder(); 
     String line=null; 
     while ((line=reader.readLine())!=null) 
     { 
      strbuilder.append(line); 
     } 
     is.close(); 
     mydata=strbuilder.toString(); 
     JSONArray obj=new JSONArray(mydata); 
     a.clear(); 
     b.clear(); 
     c.clear(); 
     d.clear(); 
     for(int i=0;i<obj.length();i++) 
     { 

      JSONObject obj1=obj.getJSONObject(i); 

      a.add(i,obj1.getString("Name")); 
      b.add(i,obj1.getString("society")); 
      c.add(i,obj1.getString("venue")); 
      d.add(i,obj1.getString("date")); 
     } 
     String[] s = new String[a.size()]; 
     s=a.toArray(s); 
     s1 = s; 

     String[] soc = new String[b.size()]; 
     soc=b.toArray(soc); 
     s2 = soc; 

     String[] ven = new String[c.size()]; 
     ven=c.toArray(ven); 
     s3 = ven; 

     String[] dat = new String[d.size()]; 
     dat=d.toArray(dat); 
     s4 = dat; 
    } 
    catch (Exception e) 
    { 

    } 


} 


} 
+0

根本不需要那個LinearLayout。 –

回答

0

您已經添加按鈕clickable=false多數民衆贊成的財產爲什麼它不工作取出相同的屬性從你的按鈕,它會正常工作。

<Button 
    style="?android:attr/buttonStyleSmall" 
    android:background="#00897B" 
    android:layout_width="180dp" 
    android:layout_height="wrap_content" 
    android:textStyle="bold" 
    android:layout_weight="1.9" 
    android:textAllCaps="false" 
    android:layout_gravity="center_horizontal" 
    android:textSize="16dp" 
    android:textColor="#ffffff" 
    android:text="Register an event" 
    android:id="@+id/button" 
    android:layout_alignTop="@+id/listView" 
    android:layout_alignParentStart="true" /> 
+0

我添加了該屬性,因爲我閱讀了一個stackoverflow答案,這可能看起來不對,但實際上它工作。但在我的情況下,添加或刪除此行沒有任何區別 –

+0

嘗試清除項目後刪除行 –

+0

不,它仍然不工作 –

0

它們都在XML文件中設置爲clickable = false

另一件事是你有許多矛盾或無用的XML屬性。對於前例列表視圖,你有

android:layout_below="@+id/ll" 
android:layout_alignParentTop="true" 

這沒有任何意義。也許你的列表視圖覆蓋了Linearlayout,防止點擊達到它。這只是一個猜測。

無論如何嘗試刪除所有不必要的屬性,這一定會有所幫助。

+0

它仍然不起作用 –

+0

我添加了該屬性,因爲我閱讀了一個stackoverflow答案,這可能看起來不對,但它實際上工作。但在我的情況下,添加或刪除這條線沒有任何區別 –

+0

那麼究竟發生了什麼當你點擊按鈕和圖像時,應用程序崩潰了嗎?嘗試在點擊監聽器上設置一個斷點以查看它是否曾經被調用過。 – JDenais